const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM('<!DOCUMENT html><p>Test</p>')
window = dom.window
location = window.location
document = window.document
navigator = window.navigator
history = window.history
var sharedChunk = {
    key: "d1f15ad3fdf0c704434eaf23c7c18698",
    db: "D",
    nebulaVersion: "3_23_04_07_00",
    movingDraw: false,
    host: "https://webapi.amap.com",
};
(function(exports) {
    var extend = function(t) {
        for (var r, n, i = Array.prototype.slice.call(arguments, 1), a = 0, o = i.length; a < o; a += 1)
            for (var s in r = i[a] || {})
                r.hasOwnProperty(s) && ("function" == typeof (n = r[s]) && t.prototype ? t.prototype[s] = n : t[s] = n);
        return t
    };
    function isBrowser() {
        return "undefined" != typeof window && "undefined" != typeof document
    }
    function isWasmSuppport() {
        try {
            if ("object" == typeof WebAssembly && "function" == typeof WebAssembly.instantiate && TextDecoder && TextEncoder) {
                var t = new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0]));
                if (t instanceof WebAssembly.Module)
                    return new WebAssembly.Instance(t)instanceof WebAssembly.Instance
            }
        } catch (t) {}
        return !1
    }
    var testWepP = function(t) {
        var e = new Image;
        e.src = "",
        e.onload = e.onerror = function() {
            t(2 === e.height)
        }
    };
    function isWorkerEnv() {
        try {
            return document,
            !1
        } catch (t) {
            return !0
        }
    }
    function getSupport(t) {
        function e(t) {
            return -1 !== n.indexOf(t)
        }
        var r = {
            runSupport: (new Date).getTime()
        }
          , E = isWasmSuppport()
          , n = navigator.userAgent.toLowerCase()
          , j = !0
          , i = e("macintosh")
          , F = e("ipad;") || e("ipad ")
          , a = e("ipod touch;")
          , o = e("iphone;") || e("iphone ")
          , a = o || F || a
          , s = (i || a) && e("safari") && e("version/")
          , u = e("macwechat")
          , c = e("windowswechat")
          , R = {
            touch: !1,
            mac: i,
            Ue: !1,
            webkit: !1,
            $e: !1,
            scale: 1,
            android: !1,
            DW: isWorkerEnv(),
            wasm: E,
            safari: s,
            AQ: u,
            gQ: c,
            amapRunTime: r
        };
        if (isBrowser()) {
            var f = window
              , c = (u = document).documentElement
              , h = /([a-z0-9]*\d+[a-z0-9]*)/
              , D = "google swiftshader;microsoft basic render driver;vmware svga 3d;Intel 965GM;Intel B43;Intel G41;Intel G45;Intel G965;Intel GMA 3600;Intel Mobile 4;Intel Mobile 45;Intel Mobile 965".split(";")
              , l = "ActiveXObject"in f
              , d = 0 != window.detectRetina && ("devicePixelRatio"in f && 1 < f.devicePixelRatio || l && "matchMedia"in f && f.matchMedia("(min-resolution:144dpi)") && f.matchMedia("(min-resolution:144dpi)").matches)
              , B = e("windows nt")
              , v = (n.search(/windows nt [1-5]\./),
            n.search(/windows nt 5\.[12]/),
            e("windows nt 10"),
            e("windows phone"))
              , G = e("Mb2345Browser")
              , V = (a && n.search(/ os [456]_/),
            a && n.search(/ os [4-8]_/),
            a && n.search(/ os [78]_/),
            a && e("os 8_"),
            a && e("os 10_"))
              , g = e("android")
              , p = 0
              , z = (g && (p = parseInt(n.split("android")[1]) || 0),
            g && p < 4)
              , y = (g && 5 <= p || n.search(/android 4.4/),
            g ? "android" : a ? "ios" : B ? "windows" : i ? "mac" : "other")
              , p = l && !f.XMLHttpRequest
              , W = l && !u.querySelector
              , m = l && !u.addEventListener
              , H = l && e("msie 9")
              , q = l && e("msie 10")
              , Y = l && e("rv:11")
              , K = m || H
              , b = e("edge")
              , T = (e("qtweb"),
            e("ucbrowser"))
              , X = e("alipay") || g && T
              , Z = (e("miuibrowser"),
            e("micromessenger"))
              , x = e("dingtalk")
              , J = e("mqqbrowser")
              , Q = e("baidubrowser")
              , M = e("crios/")
              , S = e("chrome/")
              , M = !((S || M) && e("chromium")) && (S && 30 < parseInt(n.split("chrome/")[1]) || M && 30 < parseInt(n.split("crios/")[1]))
              , tt = e("firefox")
              , A = tt && 27 < parseInt(n.split("firefox/")[1])
              , w = s && 7 < parseInt(n.split("version/")[1])
              , P = (a && e("aliapp"),
            g || a || v || e("mobile"))
              , v = "ontouchstart"in u
              , et = f.navigator && f.navigator.msPointerEnabled && !!f.navigator.msMaxTouchPoints
              , rt = f.navigator && !!f.navigator.maxTouchPoints
              , nt = !v && (rt || et)
              , v = v || nt
              , I = function() {
                if (!P)
                    return f.devicePixelRatio || 1;
                var t = document.getElementsByTagName("meta");
                if (window.parent && window.parent !== window)
                    try {
                        if (window.parent.location.origin !== window.location.origin)
                            return 1;
                        t = window.parent.document.getElementsByTagName("meta")
                    } catch (t) {
                        return 1
                    }
                for (var r, n, e, a = t.length - 1; 0 <= a; --a)
                    if ("viewport" === t[a].name)
                        return r = void 0,
                        -1 !== (e = t[a].content).indexOf("initial-scale") && (r = parseFloat(e.split("initial-scale=")[1])),
                        n = -1 !== e.indexOf("minimum-scale") ? parseFloat(e.split("minimum-scale=")[1]) : 0,
                        e = -1 !== e.indexOf("maximum-scale") ? parseFloat(e.split("maximum-scale=")[1]) : 1 / 0,
                        r ? n <= e ? e < r ? e : r < n ? n : r : (console && console.log && console.log("viewport参数不合法"),
                        null) : n <= e ? 1 <= n ? 1 : Math.min(e, 1) : (console && console.log && console.log("viewport参数不合法"),
                        null)
            }()
              , it = d && (!P || !!I && 1 <= I)
              , at = l && "transition"in c.style
              , ot = !!u.createElementNS && !!u.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect
              , C = u.createElement("canvas")
              , st = !(!C || !C.getContext)
              , u = window.URL || window.webkitURL
              , ut = !0 !== window.disableWorker && !l && !(T && g && !M) && window.Worker && u && u.createObjectURL && window.Blob
              , $ = ""
              , N = ""
              , k = 0
              , u = 0 != window.higtQualityRender || !d
              , ct = window.movingDraw
              , L = {
                alpha: !0,
                antialias: u,
                depth: !0,
                stencil: !0
            }
              , O = (u = function() {
                if (st && ut)
                    for (var t, r = ["webgl", "experimental-webgl", "moz-webgl"], n = null, i = 0; i < r.length; i += 1) {
                        try {
                            n = C.getContext(r[i], L)
                        } catch (t) {}
                        if (n) {
                            if (n.drawingBufferWidth !== C.width || n.drawingBufferHeight !== C.height)
                                return !1;
                            if (!n.getShaderPrecisionFormat || !n.getParameter || !n.getExtension)
                                return !1;
                            if (k = n.getParameter(n.MAX_RENDERBUFFER_SIZE),
                            !(a = n.getParameter(n.MAX_VIEWPORT_DIMS)))
                                return !1;
                            k = Math.min(k, a[0], a[1]),
                            s && "mac" == y && (k = Math.min(k, 4096));
                            var a = Math.max(screen.width, screen.height);
                            if (it && (a *= Math.min(2, window.devicePixelRatio || 1)),
                            k < a)
                                return !1;
                            if (n.getShaderPrecisionFormat(35632, 36338).precision < 23 || n.getShaderPrecisionFormat(35633, 36338).precision < 23)
                                return !1;
                            var e = o = a = void 0
                              , o = (t = N = n.getExtension("WEBGL_debug_renderer_info") ? n.getParameter(37446) : null) ? (a = null,
                            0 <= (t = (t = (o = (t = t.toLowerCase()).match(/angle \((.*)\)/)) ? (t = o[1]).replace(/\s*direct3d.*$/, "") : t).replace(/\s*\([^\)]*wddm[^\)]*\)/, "")).indexOf("intel") ? (a = ["Intel"],
                            0 <= t.indexOf("mobile") && a.push("Mobile"),
                            (0 <= t.indexOf("gma") || 0 <= t.indexOf("graphics media accelerator")) && a.push("GMA"),
                            0 <= t.indexOf("haswell") ? a.push("Haswell") : 0 <= t.indexOf("ivy") ? a.push("HD 4000") : 0 <= t.indexOf("sandy") ? a.push("HD 3000") : 0 <= t.indexOf("ironlake") ? a.push("HD") : (0 <= t.indexOf("hd") && a.push("HD"),
                            (e = t.match(h)) && a.push(e[1].toUpperCase())),
                            a.join(" ")) : 0 <= t.indexOf("nvidia") || 0 <= t.indexOf("quadro") || 0 <= t.indexOf("geforce") || 0 <= t.indexOf("nvs") ? (a = ["nVidia"],
                            0 <= t.indexOf("geforce") && a.push("geForce"),
                            0 <= t.indexOf("quadro") && a.push("Quadro"),
                            0 <= t.indexOf("nvs") && a.push("NVS"),
                            t.match(/\bion\b/) && a.push("ION"),
                            t.match(/gtx\b/) ? a.push("GTX") : t.match(/gts\b/) ? a.push("GTS") : t.match(/gt\b/) ? a.push("GT") : t.match(/gs\b/) ? a.push("GS") : t.match(/ge\b/) ? a.push("GE") : t.match(/fx\b/) && a.push("FX"),
                            (e = t.match(h)) && a.push(e[1].toUpperCase().replace("GS", "")),
                            0 <= t.indexOf("titan") ? a.push("TITAN") : 0 <= t.indexOf("ti") && a.push("Ti"),
                            a.join(" ")) : 0 <= t.indexOf("amd") || 0 <= t.indexOf("ati") || 0 <= t.indexOf("radeon") || 0 <= t.indexOf("firegl") || 0 <= t.indexOf("firepro") ? (a = ["AMD"],
                            0 <= t.indexOf("mobil") && a.push("Mobility"),
                            0 <= (o = t.indexOf("radeon")) && a.push("Radeon"),
                            0 <= t.indexOf("firepro") ? a.push("FirePro") : 0 <= t.indexOf("firegl") && a.push("FireGL"),
                            0 <= t.indexOf("hd") && a.push("HD"),
                            (e = (t = 0 <= o ? t.substring(o) : t).match(h)) && a.push(e[1].toUpperCase().replace("HD", "")),
                            a.join(" ")) : t.substring(0, 100)) : null;
                            if (o) {
                                if (-1 < o.indexOf("google swiftshader"))
                                    return j = !1;
                                if (-1 !== D.indexOf(o))
                                    return !1
                            }
                            return $ = r[i],
                            !0
                        }
                    }
                return !1
            }
            )()
              , ft = void 0 === t[8] || t[8]
              , O = window.Uint8Array && ft && !window.forbidenWebGL && O && (window.forceWebGL || (M || A || w || b || Z || x) && "other" != y)
              , M = window.forceWebGLBaseRender || O ? "w" : "d"
              , A = e("webkit")
              , w = "WebKitCSSMatrix"in f && "m11"in new window.WebKitCSSMatrix
              , x = "MozPerspective"in c.style
              , c = "vV"in c.style
              , ht = at || w || x || c
              , t = void 0 !== t[12] ? t[12] : null
              , _ = !0;
            try {
                void 0 === f.localStorage ? _ = !1 : (U = (new Date).getTime() + "",
                f.localStorage.setItem("_test", U),
                f.localStorage.getItem("_test") !== U && (_ = !1),
                f.localStorage.removeItem("_test"))
            } catch (t) {
                _ = !1
            }
            var U = parseInt(n.split("chrome/")[1])
              , R = {
                iPad: F,
                iPhone: o,
                size: o ? 100 : g ? 200 : 500,
                mac: i,
                windows: B,
                ios: a,
                uT: V,
                android: g,
                android23: z,
                cT: X,
                plat: y,
                baidu: Q,
                qq: J,
                safari: s,
                wechat: Z,
                ie: l,
                ie6: p,
                ie7: W,
                ie9: H,
                ie10: q,
                ielt9: m,
                fT: K,
                ie11: Y,
                edge: b,
                hT: l && !Y,
                lT: G,
                RL: _,
                vT: t,
                geolocation: P || l && !m || b,
                SL: T,
                uc: T && !S,
                chrome: S,
                gT: !0,
                firefox: tt,
                hardwareAccEnabled: j,
                $e: P,
                mobileWebkit: P && A,
                mobileWebkit3d: P && w,
                mobileOpera: P && f.opera,
                Ue: d,
                bT: I,
                Mr: it,
                touch: v,
                msPointer: et,
                pointer: rt,
                yT: nt,
                pT: S && 57 <= U,
                mT: !P && S && 64 <= U,
                webkit: A,
                ie3d: at,
                webkit3d: w,
                gecko3d: x,
                opera3d: c,
                any3d: ht,
                isSvg: ot,
                isCanvas: st,
                isWorker: ut,
                TT: !1,
                isWebGL: O,
                AT: $,
                xT: L,
                ST: N,
                wT: k,
                MT: !1,
                movingDraw: ct,
                baseRender: ft ? M : "d",
                scale: d ? 2 : 1,
                getContext: function(t, e) {
                    var r = {};
                    return extend(r, L),
                    extend(r, e),
                    t.getContext($, r)
                },
                mH: !1,
                wasm: E,
                amapRunTime: r,
                sY: u
            };
            testWepP(function(t) {
                R.mH = t
            })
        }
        return R
    }
    var Browser = getSupport("undefined" == typeof config ? [] : config)
      , canceledWorkerFetch = ("undefined" != typeof createImageBitmap && "undefined" != typeof ImageBitmap && (Browser.imageBitmap = !0),
    Boolean(Browser.DW ? !Browser.safari && !Browser.AQ && !Browser.gQ && self.fetch && self.Request && self.AbortController && self.Request.prototype.hasOwnProperty("signal") : !Browser.safari && !Browser.AQ && !Browser.gQ && window.fetch && window.Request && window.AbortController && window.Request.prototype.hasOwnProperty("signal")))
      , freeGlobal = (Browser.LZ = canceledWorkerFetch,
    Browser.amapRunTime = {
        workerTime: {}
    },
    "object" == typeof global && global && global.Object === Object && global)
      , freeSelf = "object" == typeof self && self && self.Object === Object && self
      , root = freeGlobal || freeSelf || Function("return this")()
      , Symbol = root.Symbol
      , objectProto = Object.prototype
      , hasOwnProperty = objectProto.hasOwnProperty
      , nativeObjectToString = objectProto.toString
      , symToStringTag = Symbol ? Symbol.toStringTag : void 0;
    function getRawTag(t) {
        var e = hasOwnProperty.call(t, symToStringTag)
          , r = t[symToStringTag];
        try {
            var n = !(t[symToStringTag] = void 0)
        } catch (t) {}
        var i = nativeObjectToString.call(t);
        return n && (e ? t[symToStringTag] = r : delete t[symToStringTag]),
        i
    }
    var objectProto$1 = Object.prototype
      , nativeObjectToString$1 = objectProto$1.toString;
    function objectToString(t) {
        return nativeObjectToString$1.call(t)
    }
    var nullTag = "[object Null]"
      , undefinedTag = "[object Undefined]"
      , symToStringTag$1 = Symbol ? Symbol.toStringTag : void 0;
    function baseGetTag(t) {
        return null == t ? void 0 === t ? undefinedTag : nullTag : (symToStringTag$1 && symToStringTag$1 in Object(t) ? getRawTag : objectToString)(t)
    }
    function isObjectLike(t) {
        return null != t && "object" == typeof t
    }
    var symbolTag = "[object Symbol]";
    function isSymbol(t) {
        return "symbol" == typeof t || isObjectLike(t) && baseGetTag(t) == symbolTag
    }
    function arrayMap(t, e) {
        for (var r = -1, n = null == t ? 0 : t.length, i = Array(n); ++r < n; )
            i[r] = e(t[r], r, t);
        return i
    }
    var isArray = Array.isArray
      , INFINITY = 1 / 0
      , symbolProto = Symbol ? Symbol.prototype : void 0
      , symbolToString = symbolProto ? symbolProto.toString : void 0;
    function baseToString(t) {
        var e;
        return "string" == typeof t ? t : isArray(t) ? arrayMap(t, baseToString) + "" : isSymbol(t) ? symbolToString ? symbolToString.call(t) : "" : "0" == (e = t + "") && 1 / t == -INFINITY ? "-0" : e
    }
    var reWhitespace = /\s/;
    function trimmedEndIndex(t) {
        for (var e = t.length; e-- && reWhitespace.test(t.charAt(e)); )
            ;
        return e
    }
    var reTrimStart = /^\s+/;
    function baseTrim(t) {
        return t && t.slice(0, trimmedEndIndex(t) + 1).replace(reTrimStart, "")
    }
    function isObject(t) {
        var e = typeof t;
        return null != t && ("object" == e || "function" == e)
    }
    var NAN = NaN
      , reIsBadHex = /^[-+]0x[0-9a-f]+$/i
      , reIsBinary = /^0b[01]+$/i
      , reIsOctal = /^0o[0-7]+$/i
      , freeParseInt = parseInt;
    function toNumber(t) {
        if ("number" == typeof t)
            return t;
        if (isSymbol(t))
            return NAN;
        if ("string" != typeof (t = isObject(t) ? isObject(e = "function" == typeof t.valueOf ? t.valueOf() : t) ? e + "" : e : t))
            return 0 === t ? t : +t;
        t = baseTrim(t);
        var e = reIsBinary.test(t);
        return e || reIsOctal.test(t) ? freeParseInt(t.slice(2), e ? 2 : 8) : reIsBadHex.test(t) ? NAN : +t
    }
    var INFINITY$1 = 1 / 0
      , MAX_INTEGER = 17976931348623157e292;
    function toFinite(t) {
        return t ? (t = toNumber(t)) === INFINITY$1 || t === -INFINITY$1 ? (t < 0 ? -1 : 1) * MAX_INTEGER : t == t ? t : 0 : 0 === t ? t : 0
    }
    function toInteger(t) {
        var e = (t = toFinite(t)) % 1;
        return t == t ? e ? t - e : t : 0
    }
    function identity(t) {
        return t
    }
    var asyncTag = "[object AsyncFunction]"
      , funcTag = "[object Function]"
      , genTag = "[object GeneratorFunction]"
      , proxyTag = "[object Proxy]";
    function isFunction(t) {
        return !!isObject(t) && ((t = baseGetTag(t)) == funcTag || t == genTag || t == asyncTag || t == proxyTag)
    }
    var coreJsData = root["__core-js_shared__"]
      , maskSrcKey = function() {
        var t = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.Xb || "");
        return t ? "Symbol(src)_1." + t : ""
    }();
    function isMasked(t) {
        return maskSrcKey && maskSrcKey in t
    }
    var funcProto = Function.prototype
      , funcToString = funcProto.toString;
    function toSource(t) {
        if (null != t) {
            try {
                return funcToString.call(t)
            } catch (t) {}
            try {
                return t + ""
            } catch (t) {}
        }
        return ""
    }
    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g
      , reIsHostCtor = /^\[object .+?Constructor\]$/
      , funcProto$1 = Function.prototype
      , objectProto$2 = Object.prototype
      , funcToString$1 = funcProto$1.toString
      , hasOwnProperty$1 = objectProto$2.hasOwnProperty
      , reIsNative = RegExp("^" + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
    function baseIsNative(t) {
        return isObject(t) && !isMasked(t) && (isFunction(t) ? reIsNative : reIsHostCtor).test(toSource(t))
    }
    function getValue(t, e) {
        return null == t ? void 0 : t[e]
    }
    function getNative(t, e) {
        return baseIsNative(t = getValue(t, e)) ? t : void 0
    }
    var WeakMap = getNative(root, "WeakMap")
      , objectCreate = Object.create
      , baseCreate = function() {
        function e() {}
        return function(t) {
            return isObject(t) ? objectCreate ? objectCreate(t) : (e.prototype = t,
            t = new e,
            e.prototype = void 0,
            t) : {}
        }
    }();
    function apply(t, e, r) {
        switch (r.length) {
        case 0:
            return t.call(e);
        case 1:
            return t.call(e, r[0]);
        case 2:
            return t.call(e, r[0], r[1]);
        case 3:
            return t.call(e, r[0], r[1], r[2])
        }
        return t.apply(e, r)
    }
    function copyArray(t, e) {
        var r = -1
          , n = t.length;
        for (e = e || Array(n); ++r < n; )
            e[r] = t[r];
        return e
    }
    var HOT_COUNT = 800
      , HOT_SPAN = 16
      , nativeNow = Date.now;
    function shortOut(r) {
        var n = 0
          , i = 0;
        return function() {
            var t = nativeNow()
              , e = HOT_SPAN - (t - i);
            if (i = t,
            0 < e) {
                if (++n >= HOT_COUNT)
                    return arguments[0]
            } else
                n = 0;
            return r.apply(void 0, arguments)
        }
    }
    function constant(t) {
        return function() {
            return t
        }
    }
    var defineProperty = function() {
        try {
            var t = getNative(Object, "defineProperty");
            return t({}, "", {}),
            t
        } catch (t) {}
    }()
      , baseSetToString = defineProperty ? function(t, e) {
        return defineProperty(t, "toString", {
            configurable: !0,
            enumerable: !1,
            value: constant(e),
            writable: !0
        })
    }
    : identity
      , setToString = shortOut(baseSetToString);
    function arrayEach(t, e) {
        for (var r = -1, n = null == t ? 0 : t.length; ++r < n && !1 !== e(t[r], r, t); )
            ;
        return t
    }
    function baseFindIndex(t, e, r, n) {
        for (var i = t.length, a = r + (n ? 1 : -1); n ? a-- : ++a < i; )
            if (e(t[a], a, t))
                return a;
        return -1
    }
    var MAX_SAFE_INTEGER = 9007199254740991
      , reIsUint = /^(?:0|[1-9]\d*)$/;
    function isIndex(t, e) {
        var r = typeof t;
        return !!(e = null == e ? MAX_SAFE_INTEGER : e) && ("number" == r || "symbol" != r && reIsUint.test(t)) && -1 < t && t % 1 == 0 && t < e
    }
    function baseAssignValue(t, e, r) {
        "__proto__" == e && defineProperty ? defineProperty(t, e, {
            configurable: !0,
            enumerable: !0,
            value: r,
            writable: !0
        }) : t[e] = r
    }
    function eq(t, e) {
        return t === e || t != t && e != e
    }
    var objectProto$3 = Object.prototype
      , hasOwnProperty$2 = objectProto$3.hasOwnProperty;
    function assignValue(t, e, r) {
        var n = t[e];
        hasOwnProperty$2.call(t, e) && eq(n, r) && (void 0 !== r || e in t) || baseAssignValue(t, e, r)
    }
    function copyObject(t, e, r, n) {
        for (var i = !r, a = (r = r || {},
        -1), o = e.length; ++a < o; ) {
            var s = e[a]
              , u = n ? n(r[s], t[s], s, r, t) : void 0;
            (i ? baseAssignValue : assignValue)(r, s, void 0 === u ? t[s] : u)
        }
        return r
    }
    var nativeMax = Math.max;
    function overRest(a, o, s) {
        return o = nativeMax(void 0 === o ? a.length - 1 : o, 0),
        function() {
            for (var t = arguments, e = -1, r = nativeMax(t.length - o, 0), n = Array(r); ++e < r; )
                n[e] = t[o + e];
            for (var e = -1, i = Array(o + 1); ++e < o; )
                i[e] = t[e];
            return i[o] = s(n),
            apply(a, this, i)
        }
    }
    function baseRest(t, e) {
        return setToString(overRest(t, e, identity), t + "")
    }
    var MAX_SAFE_INTEGER$1 = 9007199254740991;
    function isLength(t) {
        return "number" == typeof t && -1 < t && t % 1 == 0 && t <= MAX_SAFE_INTEGER$1
    }
    function isArrayLike(t) {
        return null != t && isLength(t.length) && !isFunction(t)
    }
    function isIterateeCall(t, e, r) {
        var n;
        return isObject(r) && ("number" == (n = typeof e) ? isArrayLike(r) && isIndex(e, r.length) : "string" == n && e in r) && eq(r[e], t)
    }
    function createAssigner(s) {
        return baseRest(function(t, e) {
            var r = -1
              , n = e.length
              , i = 1 < n ? e[n - 1] : void 0
              , a = 2 < n ? e[2] : void 0
              , i = 3 < s.length && "function" == typeof i ? (n--,
            i) : void 0;
            for (a && isIterateeCall(e[0], e[1], a) && (i = n < 3 ? void 0 : i,
            n = 1),
            t = Object(t); ++r < n; ) {
                var o = e[r];
                o && s(t, o, r, i)
            }
            return t
        })
    }
    var objectProto$4 = Object.prototype;
    function isPrototype(t) {
        var e = t && t.constructor;
        return t === ("function" == typeof e && e.prototype || objectProto$4)
    }
    function baseTimes(t, e) {
        for (var r = -1, n = Array(t); ++r < t; )
            n[r] = e(r);
        return n
    }
    var argsTag = "[object Arguments]";
    function baseIsArguments(t) {
        return isObjectLike(t) && baseGetTag(t) == argsTag
    }
    var objectProto$5 = Object.prototype
      , hasOwnProperty$3 = objectProto$5.hasOwnProperty
      , propertyIsEnumerable = objectProto$5.propertyIsEnumerable
      , isArguments = baseIsArguments(function() {
        return arguments
    }()) ? baseIsArguments : function(t) {
        return isObjectLike(t) && hasOwnProperty$3.call(t, "callee") && !propertyIsEnumerable.call(t, "callee")
    }
    ;
    function stubFalse() {
        return !1
    }
    var freeExports = "object" == typeof exports && exports && !exports.nodeType && exports
      , freeModule = freeExports && "object" == typeof module && module && !module.nodeType && module
      , moduleExports = freeModule && freeModule.exports === freeExports
      , Buffer = moduleExports ? root.Zb : void 0
      , nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0
      , isBuffer = nativeIsBuffer || stubFalse
      , argsTag$1 = "[object Arguments]"
      , arrayTag = "[object Array]"
      , boolTag = "[object Boolean]"
      , dateTag = "[object Date]"
      , errorTag = "[object Error]"
      , funcTag$1 = "[object Function]"
      , mapTag = "[object Map]"
      , numberTag = "[object Number]"
      , objectTag = "[object Object]"
      , regexpTag = "[object RegExp]"
      , setTag = "[object Set]"
      , stringTag = "[object String]"
      , weakMapTag = "[object WeakMap]"
      , arrayBufferTag = "[object ArrayBuffer]"
      , dataViewTag = "[object DataView]"
      , float32Tag = "[object Float32Array]"
      , float64Tag = "[object Float64Array]"
      , int8Tag = "[object Int8Array]"
      , int16Tag = "[object Int16Array]"
      , int32Tag = "[object Int32Array]"
      , uint8Tag = "[object Uint8Array]"
      , uint8ClampedTag = "[object Uint8ClampedArray]"
      , uint16Tag = "[object Uint16Array]"
      , uint32Tag = "[object Uint32Array]"
      , typedArrayTags = {};
    function baseIsTypedArray(t) {
        return isObjectLike(t) && isLength(t.length) && !!typedArrayTags[baseGetTag(t)]
    }
    function baseUnary(e) {
        return function(t) {
            return e(t)
        }
    }
    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = !0,
    typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = !1;
    var freeExports$1 = "object" == typeof exports && exports && !exports.nodeType && exports
      , freeModule$1 = freeExports$1 && "object" == typeof module && module && !module.nodeType && module
      , moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1
      , freeProcess = moduleExports$1 && freeGlobal.process
      , nodeUtil = function() {
        try {
            var t = freeModule$1 && freeModule$1.Qb && freeModule$1.Qb("util").types;
            return t || freeProcess && freeProcess.tg && freeProcess.tg("util")
        } catch (t) {}
    }()
      , nodeIsTypedArray = nodeUtil && nodeUtil.rg
      , isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray
      , objectProto$6 = Object.prototype
      , hasOwnProperty$4 = objectProto$6.hasOwnProperty;
    function arrayLikeKeys(t, e) {
        var r, n = isArray(t), i = !n && isArguments(t), a = !n && !i && isBuffer(t), o = !n && !i && !a && isTypedArray(t), s = n || i || a || o, u = s ? baseTimes(t.length, String) : [], c = u.length;
        for (r in t)
            !e && !hasOwnProperty$4.call(t, r) || s && ("length" == r || a && ("offset" == r || "parent" == r) || o && ("buffer" == r || "byteLength" == r || "byteOffset" == r) || isIndex(r, c)) || u.push(r);
        return u
    }
    function overArg(e, r) {
        return function(t) {
            return e(r(t))
        }
    }
    var nativeKeys = overArg(Object.keys, Object)
      , objectProto$7 = Object.prototype
      , hasOwnProperty$5 = objectProto$7.hasOwnProperty;
    function baseKeys(t) {
        if (!isPrototype(t))
            return nativeKeys(t);
        var e, r = [];
        for (e in Object(t))
            hasOwnProperty$5.call(t, e) && "constructor" != e && r.push(e);
        return r
    }
    function keys(t) {
        return (isArrayLike(t) ? arrayLikeKeys : baseKeys)(t)
    }
    var objectProto$8 = Object.prototype
      , hasOwnProperty$6 = objectProto$8.hasOwnProperty
      , assign = createAssigner(function(t, e) {
        if (isPrototype(e) || isArrayLike(e))
            copyObject(e, keys(e), t);
        else
            for (var r in e)
                hasOwnProperty$6.call(e, r) && assignValue(t, r, e[r])
    });
    function nativeKeysIn(t) {
        var e = [];
        if (null != t)
            for (var r in Object(t))
                e.push(r);
        return e
    }
    var objectProto$9 = Object.prototype
      , hasOwnProperty$7 = objectProto$9.hasOwnProperty;
    function baseKeysIn(t) {
        if (!isObject(t))
            return nativeKeysIn(t);
        var e, r = isPrototype(t), n = [];
        for (e in t)
            ("constructor" != e || !r && hasOwnProperty$7.call(t, e)) && n.push(e);
        return n
    }
    function keysIn(t) {
        return isArrayLike(t) ? arrayLikeKeys(t, !0) : baseKeysIn(t)
    }
    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/
      , reIsPlainProp = /^\w*$/;
    function isKey(t, e) {
        var r;
        return !isArray(t) && ("number" == (r = typeof t) || "symbol" == r || "boolean" == r || null == t || isSymbol(t) || reIsPlainProp.test(t) || !reIsDeepProp.test(t) || null != e && t in Object(e))
    }
    var nativeCreate = getNative(Object, "create");
    function hashClear() {
        this.ng = nativeCreate ? nativeCreate(null) : {},
        this.size = 0
    }
    function hashDelete(t) {
        return t = this.has(t) && delete this.ng[t],
        this.size -= t ? 1 : 0,
        t
    }
    var HASH_UNDEFINED = "__lodash_hash_undefined__"
      , objectProto$a = Object.prototype
      , hasOwnProperty$8 = objectProto$a.hasOwnProperty;
    function hashGet(t) {
        var e, r = this.ng;
        return nativeCreate ? (e = r[t]) === HASH_UNDEFINED ? void 0 : e : hasOwnProperty$8.call(r, t) ? r[t] : void 0
    }
    var objectProto$b = Object.prototype
      , hasOwnProperty$9 = objectProto$b.hasOwnProperty;
    function hashHas(t) {
        var e = this.ng;
        return nativeCreate ? void 0 !== e[t] : hasOwnProperty$9.call(e, t)
    }
    var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
    function hashSet(t, e) {
        var r = this.ng;
        return this.size += this.has(t) ? 0 : 1,
        r[t] = nativeCreate && void 0 === e ? HASH_UNDEFINED$1 : e,
        this
    }
    function Hash(t) {
        var e = -1
          , r = null == t ? 0 : t.length;
        for (this.clear(); ++e < r; ) {
            var n = t[e];
            this.set(n[0], n[1])
        }
    }
    function listCacheClear() {
        this.ng = [],
        this.size = 0
    }
    function assocIndexOf(t, e) {
        for (var r = t.length; r--; )
            if (eq(t[r][0], e))
                return r;
        return -1
    }
    Hash.prototype.clear = hashClear,
    Hash.prototype.delete = hashDelete,
    Hash.prototype.get = hashGet,
    Hash.prototype.has = hashHas,
    Hash.prototype.set = hashSet;
    var arrayProto = Array.prototype
      , splice = arrayProto.splice;
    function listCacheDelete(t) {
        var e = this.ng;
        return !((t = assocIndexOf(e, t)) < 0 || (t == e.length - 1 ? e.pop() : splice.call(e, t, 1),
        --this.size,
        0))
    }
    function listCacheGet(t) {
        var e = this.ng;
        return (t = assocIndexOf(e, t)) < 0 ? void 0 : e[t][1]
    }
    function listCacheHas(t) {
        return -1 < assocIndexOf(this.ng, t)
    }
    function listCacheSet(t, e) {
        var r = this.ng
          , n = assocIndexOf(r, t);
        return n < 0 ? (++this.size,
        r.push([t, e])) : r[n][1] = e,
        this
    }
    function ListCache(t) {
        var e = -1
          , r = null == t ? 0 : t.length;
        for (this.clear(); ++e < r; ) {
            var n = t[e];
            this.set(n[0], n[1])
        }
    }
    ListCache.prototype.clear = listCacheClear,
    ListCache.prototype.delete = listCacheDelete,
    ListCache.prototype.get = listCacheGet,
    ListCache.prototype.has = listCacheHas,
    ListCache.prototype.set = listCacheSet;
    var Map = getNative(root, "Map");
    function mapCacheClear() {
        this.size = 0,
        this.ng = {
            hash: new Hash,
            map: new (Map || ListCache),
            string: new Hash
        }
    }
    function isKeyable(t) {
        var e = typeof t;
        return "string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t
    }
    function getMapData(t, e) {
        return t = t.ng,
        isKeyable(e) ? t["string" == typeof e ? "string" : "hash"] : t.map
    }
    function mapCacheDelete(t) {
        return t = getMapData(this, t).delete(t),
        this.size -= t ? 1 : 0,
        t
    }
    function mapCacheGet(t) {
        return getMapData(this, t).get(t)
    }
    function mapCacheHas(t) {
        return getMapData(this, t).has(t)
    }
    function mapCacheSet(t, e) {
        var r = getMapData(this, t)
          , n = r.size;
        return r.set(t, e),
        this.size += r.size == n ? 0 : 1,
        this
    }
    function MapCache(t) {
        var e = -1
          , r = null == t ? 0 : t.length;
        for (this.clear(); ++e < r; ) {
            var n = t[e];
            this.set(n[0], n[1])
        }
    }
    MapCache.prototype.clear = mapCacheClear,
    MapCache.prototype.delete = mapCacheDelete,
    MapCache.prototype.get = mapCacheGet,
    MapCache.prototype.has = mapCacheHas,
    MapCache.prototype.set = mapCacheSet;
    var FUNC_ERROR_TEXT = "Expected a function";
    function memoize(n, i) {
        if ("function" != typeof n || null != i && "function" != typeof i)
            throw new TypeError(FUNC_ERROR_TEXT);
        function a() {
            var t = arguments
              , e = i ? i.apply(this, t) : t[0]
              , r = a.cache;
            return r.has(e) ? r.get(e) : (t = n.apply(this, t),
            a.cache = r.set(e, t) || r,
            t)
        }
        return a.cache = new (memoize.Cache || MapCache),
        a
    }
    memoize.Cache = MapCache;
    var MAX_MEMOIZE_SIZE = 500;
    function memoizeCapped(t) {
        var e = (t = memoize(t, function(t) {
            return e.size === MAX_MEMOIZE_SIZE && e.clear(),
            t
        })).cache;
        return t
    }
    var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g
      , reEscapeChar = /\\(\\)?/g
      , stringToPath = memoizeCapped(function(t) {
        var i = [];
        return 46 === t.charCodeAt(0) && i.push(""),
        t.replace(rePropName, function(t, e, r, n) {
            i.push(r ? n.replace(reEscapeChar, "$1") : e || t)
        }),
        i
    });
    function toString(t) {
        return null == t ? "" : baseToString(t)
    }
    function castPath(t, e) {
        return isArray(t) ? t : isKey(t, e) ? [t] : stringToPath(toString(t))
    }
    var INFINITY$2 = 1 / 0;
    function toKey(t) {
        var e;
        return "string" == typeof t || isSymbol(t) ? t : "0" == (e = t + "") && 1 / t == -INFINITY$2 ? "-0" : e
    }
    function baseGet(t, e) {
        for (var r = 0, n = (e = castPath(e, t)).length; null != t && r < n; )
            t = t[toKey(e[r++])];
        return r && r == n ? t : void 0
    }
    function get(t, e, r) {
        return void 0 === (t = null == t ? void 0 : baseGet(t, e)) ? r : t
    }
    function arrayPush(t, e) {
        for (var r = -1, n = e.length, i = t.length; ++r < n; )
            t[i + r] = e[r];
        return t
    }
    var getPrototype = overArg(Object.getPrototypeOf, Object);
    function stackClear() {
        this.ng = new ListCache,
        this.size = 0
    }
    function stackDelete(t) {
        var e = this.ng
          , t = e.delete(t);
        return this.size = e.size,
        t
    }
    function stackGet(t) {
        return this.ng.get(t)
    }
    function stackHas(t) {
        return this.ng.has(t)
    }
    var LARGE_ARRAY_SIZE = 200;
    function stackSet(t, e) {
        var r = this.ng;
        if (r instanceof ListCache) {
            var n = r.ng;
            if (!Map || n.length < LARGE_ARRAY_SIZE - 1)
                return n.push([t, e]),
                this.size = ++r.size,
                this;
            r = this.ng = new MapCache(n)
        }
        return r.set(t, e),
        this.size = r.size,
        this
    }
    function Stack(t) {
        t = this.ng = new ListCache(t),
        this.size = t.size
    }
    function baseAssign(t, e) {
        return t && copyObject(e, keys(e), t)
    }
    function baseAssignIn(t, e) {
        return t && copyObject(e, keysIn(e), t)
    }
    Stack.prototype.clear = stackClear,
    Stack.prototype.delete = stackDelete,
    Stack.prototype.get = stackGet,
    Stack.prototype.has = stackHas,
    Stack.prototype.set = stackSet;
    var freeExports$2 = "object" == typeof exports && exports && !exports.nodeType && exports
      , freeModule$2 = freeExports$2 && "object" == typeof module && module && !module.nodeType && module
      , moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2
      , Buffer$1 = moduleExports$2 ? root.Zb : void 0
      , allocUnsafe = Buffer$1 ? Buffer$1.ig : void 0;
    function cloneBuffer(t, e) {
        return e ? t.slice() : (e = t.length,
        e = allocUnsafe ? allocUnsafe(e) : new t.constructor(e),
        t.eg(e),
        e)
    }
    function arrayFilter(t, e) {
        for (var r = -1, n = null == t ? 0 : t.length, i = 0, a = []; ++r < n; ) {
            var o = t[r];
            e(o, r, t) && (a[i++] = o)
        }
        return a
    }
    function stubArray() {
        return []
    }
    var objectProto$c = Object.prototype
      , propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable
      , nativeGetSymbols = Object.getOwnPropertySymbols
      , getSymbols = nativeGetSymbols ? function(e) {
        return null == e ? [] : (e = Object(e),
        arrayFilter(nativeGetSymbols(e), function(t) {
            return propertyIsEnumerable$1.call(e, t)
        }))
    }
    : stubArray;
    function copySymbols(t, e) {
        return copyObject(t, getSymbols(t), e)
    }
    var nativeGetSymbols$1 = Object.getOwnPropertySymbols
      , getSymbolsIn = nativeGetSymbols$1 ? function(t) {
        for (var e = []; t; )
            arrayPush(e, getSymbols(t)),
            t = getPrototype(t);
        return e
    }
    : stubArray;
    function copySymbolsIn(t, e) {
        return copyObject(t, getSymbolsIn(t), e)
    }
    function baseGetAllKeys(t, e, r) {
        return e = e(t),
        isArray(t) ? e : arrayPush(e, r(t))
    }
    function getAllKeys(t) {
        return baseGetAllKeys(t, keys, getSymbols)
    }
    function getAllKeysIn(t) {
        return baseGetAllKeys(t, keysIn, getSymbolsIn)
    }
    var DataView = getNative(root, "DataView")
      , Promise$1 = getNative(root, "Promise")
      , Set = getNative(root, "Set")
      , mapTag$1 = "[object Map]"
      , objectTag$1 = "[object Object]"
      , promiseTag = "[object Promise]"
      , setTag$1 = "[object Set]"
      , weakMapTag$1 = "[object WeakMap]"
      , dataViewTag$1 = "[object DataView]"
      , dataViewCtorString = toSource(DataView)
      , mapCtorString = toSource(Map)
      , promiseCtorString = toSource(Promise$1)
      , setCtorString = toSource(Set)
      , weakMapCtorString = toSource(WeakMap)
      , getTag = baseGetTag
      , getTag$1 = ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$1 || Map && getTag(new Map) != mapTag$1 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set && getTag(new Set) != setTag$1 || WeakMap && getTag(new WeakMap) != weakMapTag$1) && (getTag = function(t) {
        var e = baseGetTag(t);
        if (t = (t = e == objectTag$1 ? t.constructor : void 0) ? toSource(t) : "")
            switch (t) {
            case dataViewCtorString:
                return dataViewTag$1;
            case mapCtorString:
                return mapTag$1;
            case promiseCtorString:
                return promiseTag;
            case setCtorString:
                return setTag$1;
            case weakMapCtorString:
                return weakMapTag$1
            }
        return e
    }
    ),
    getTag)
      , objectProto$d = Object.prototype
      , hasOwnProperty$a = objectProto$d.hasOwnProperty;
    function initCloneArray(t) {
        var e = t.length
          , r = new t.constructor(e);
        return e && "string" == typeof t[0] && hasOwnProperty$a.call(t, "index") && (r.index = t.index,
        r.input = t.input),
        r
    }
    var Uint8Array$1 = root.Uint8Array;
    function cloneArrayBuffer(t) {
        var e = new t.constructor(t.byteLength);
        return new Uint8Array$1(e).set(new Uint8Array$1(t)),
        e
    }
    function cloneDataView(t, e) {
        return e = e ? cloneArrayBuffer(t.buffer) : t.buffer,
        new t.constructor(e,t.byteOffset,t.byteLength)
    }
    var reFlags = /\w*$/;
    function cloneRegExp(t) {
        var e = new t.constructor(t.source,reFlags.exec(t));
        return e.lastIndex = t.lastIndex,
        e
    }
    var symbolProto$1 = Symbol ? Symbol.prototype : void 0
      , symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : void 0;
    function cloneSymbol(t) {
        return symbolValueOf ? Object(symbolValueOf.call(t)) : {}
    }
    function cloneTypedArray(t, e) {
        return e = e ? cloneArrayBuffer(t.buffer) : t.buffer,
        new t.constructor(e,t.byteOffset,t.length)
    }
    var boolTag$1 = "[object Boolean]"
      , dateTag$1 = "[object Date]"
      , mapTag$2 = "[object Map]"
      , numberTag$1 = "[object Number]"
      , regexpTag$1 = "[object RegExp]"
      , setTag$2 = "[object Set]"
      , stringTag$1 = "[object String]"
      , symbolTag$1 = "[object Symbol]"
      , arrayBufferTag$1 = "[object ArrayBuffer]"
      , dataViewTag$2 = "[object DataView]"
      , float32Tag$1 = "[object Float32Array]"
      , float64Tag$1 = "[object Float64Array]"
      , int8Tag$1 = "[object Int8Array]"
      , int16Tag$1 = "[object Int16Array]"
      , int32Tag$1 = "[object Int32Array]"
      , uint8Tag$1 = "[object Uint8Array]"
      , uint8ClampedTag$1 = "[object Uint8ClampedArray]"
      , uint16Tag$1 = "[object Uint16Array]"
      , uint32Tag$1 = "[object Uint32Array]";
    function initCloneByTag(t, e, r) {
        var n = t.constructor;
        switch (e) {
        case arrayBufferTag$1:
            return cloneArrayBuffer(t);
        case boolTag$1:
        case dateTag$1:
            return new n(+t);
        case dataViewTag$2:
            return cloneDataView(t, r);
        case float32Tag$1:
        case float64Tag$1:
        case int8Tag$1:
        case int16Tag$1:
        case int32Tag$1:
        case uint8Tag$1:
        case uint8ClampedTag$1:
        case uint16Tag$1:
        case uint32Tag$1:
            return cloneTypedArray(t, r);
        case mapTag$2:
            return new n;
        case numberTag$1:
        case stringTag$1:
            return new n(t);
        case regexpTag$1:
            return cloneRegExp(t);
        case setTag$2:
            return new n;
        case symbolTag$1:
            return cloneSymbol(t)
        }
    }
    function initCloneObject(t) {
        return "function" != typeof t.constructor || isPrototype(t) ? {} : baseCreate(getPrototype(t))
    }
    var mapTag$3 = "[object Map]";
    function baseIsMap(t) {
        return isObjectLike(t) && getTag$1(t) == mapTag$3
    }
    var nodeIsMap = nodeUtil && nodeUtil.isMap
      , isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap
      , setTag$3 = "[object Set]";
    function baseIsSet(t) {
        return isObjectLike(t) && getTag$1(t) == setTag$3
    }
    var nodeIsSet = nodeUtil && nodeUtil.og
      , isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet
      , CLONE_DEEP_FLAG = 1
      , CLONE_FLAT_FLAG = 2
      , CLONE_SYMBOLS_FLAG = 4
      , argsTag$2 = "[object Arguments]"
      , arrayTag$1 = "[object Array]"
      , boolTag$2 = "[object Boolean]"
      , dateTag$2 = "[object Date]"
      , errorTag$1 = "[object Error]"
      , funcTag$2 = "[object Function]"
      , genTag$1 = "[object GeneratorFunction]"
      , mapTag$4 = "[object Map]"
      , numberTag$2 = "[object Number]"
      , objectTag$2 = "[object Object]"
      , regexpTag$2 = "[object RegExp]"
      , setTag$4 = "[object Set]"
      , stringTag$2 = "[object String]"
      , symbolTag$2 = "[object Symbol]"
      , weakMapTag$2 = "[object WeakMap]"
      , arrayBufferTag$2 = "[object ArrayBuffer]"
      , dataViewTag$3 = "[object DataView]"
      , float32Tag$2 = "[object Float32Array]"
      , float64Tag$2 = "[object Float64Array]"
      , int8Tag$2 = "[object Int8Array]"
      , int16Tag$2 = "[object Int16Array]"
      , int32Tag$2 = "[object Int32Array]"
      , uint8Tag$2 = "[object Uint8Array]"
      , uint8ClampedTag$2 = "[object Uint8ClampedArray]"
      , uint16Tag$2 = "[object Uint16Array]"
      , uint32Tag$2 = "[object Uint32Array]"
      , cloneableTags = {};
    function baseClone(r, n, i, t, e, a) {
        var o, s = n & CLONE_DEEP_FLAG, u = n & CLONE_FLAT_FLAG, c = n & CLONE_SYMBOLS_FLAG;
        if (void 0 === (o = i ? e ? i(r, t, e, a) : i(r) : o)) {
            if (!isObject(r))
                return r;
            if (t = isArray(r)) {
                if (o = initCloneArray(r),
                !s)
                    return copyArray(r, o)
            } else {
                var f = getTag$1(r)
                  , h = f == funcTag$2 || f == genTag$1;
                if (isBuffer(r))
                    return cloneBuffer(r, s);
                if (f == objectTag$2 || f == argsTag$2 || h && !e) {
                    if (o = u || h ? {} : initCloneObject(r),
                    !s)
                        return u ? copySymbolsIn(r, baseAssignIn(o, r)) : copySymbols(r, baseAssign(o, r))
                } else {
                    if (!cloneableTags[f])
                        return e ? r : {};
                    o = initCloneByTag(r, f, s)
                }
            }
            if (h = (a = a || new Stack).get(r))
                return h;
            a.set(r, o),
            isSet(r) ? r.forEach(function(t) {
                o.add(baseClone(t, n, i, t, r, a))
            }) : isMap(r) && r.forEach(function(t, e) {
                o.set(e, baseClone(t, n, i, e, r, a))
            });
            var l = t ? void 0 : (c ? u ? getAllKeysIn : getAllKeys : u ? keysIn : keys)(r);
            arrayEach(l || r, function(t, e) {
                l && (t = r[e = t]),
                assignValue(o, e, baseClone(t, n, i, e, r, a))
            })
        }
        return o
    }
    cloneableTags[argsTag$2] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$2] = cloneableTags[dataViewTag$3] = cloneableTags[boolTag$2] = cloneableTags[dateTag$2] = cloneableTags[float32Tag$2] = cloneableTags[float64Tag$2] = cloneableTags[int8Tag$2] = cloneableTags[int16Tag$2] = cloneableTags[int32Tag$2] = cloneableTags[mapTag$4] = cloneableTags[numberTag$2] = cloneableTags[objectTag$2] = cloneableTags[regexpTag$2] = cloneableTags[setTag$4] = cloneableTags[stringTag$2] = cloneableTags[symbolTag$2] = cloneableTags[uint8Tag$2] = cloneableTags[uint8ClampedTag$2] = cloneableTags[uint16Tag$2] = cloneableTags[uint32Tag$2] = !0,
    cloneableTags[errorTag$1] = cloneableTags[funcTag$2] = cloneableTags[weakMapTag$2] = !1;
    var CLONE_SYMBOLS_FLAG$1 = 4;
    function clone(t) {
        return baseClone(t, CLONE_SYMBOLS_FLAG$1)
    }
    var CLONE_DEEP_FLAG$1 = 1
      , CLONE_SYMBOLS_FLAG$2 = 4;
    function cloneDeep(t) {
        return baseClone(t, CLONE_DEEP_FLAG$1 | CLONE_SYMBOLS_FLAG$2)
    }
    var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
    function setCacheAdd(t) {
        return this.ng.set(t, HASH_UNDEFINED$2),
        this
    }
    function setCacheHas(t) {
        return this.ng.has(t)
    }
    function SetCache(t) {
        var e = -1
          , r = null == t ? 0 : t.length;
        for (this.ng = new MapCache; ++e < r; )
            this.add(t[e])
    }
    function arraySome(t, e) {
        for (var r = -1, n = null == t ? 0 : t.length; ++r < n; )
            if (e(t[r], r, t))
                return !0;
        return !1
    }
    function cacheHas(t, e) {
        return t.has(e)
    }
    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd,
    SetCache.prototype.has = setCacheHas;
    var COMPARE_PARTIAL_FLAG = 1
      , COMPARE_UNORDERED_FLAG = 2;
    function equalArrays(t, e, r, n, i, a) {
        var o = r & COMPARE_PARTIAL_FLAG
          , s = t.length;
        if (s != (u = e.length) && !(o && s < u))
            return !1;
        var u = a.get(t)
          , c = a.get(e);
        if (u && c)
            return u == e && c == t;
        var f = -1
          , h = !0
          , l = r & COMPARE_UNORDERED_FLAG ? new SetCache : void 0;
        for (a.set(t, e),
        a.set(e, t); ++f < s; ) {
            var d, v = t[f], g = e[f];
            if (void 0 !== (d = n ? o ? n(g, v, f, e, t, a) : n(v, g, f, t, e, a) : d)) {
                if (d)
                    continue;
                h = !1;
                break
            }
            if (l) {
                if (!arraySome(e, function(t, e) {
                    if (!cacheHas(l, e) && (v === t || i(v, t, r, n, a)))
                        return l.push(e)
                })) {
                    h = !1;
                    break
                }
            } else if (v !== g && !i(v, g, r, n, a)) {
                h = !1;
                break
            }
        }
        return a.delete(t),
        a.delete(e),
        h
    }
    function mapToArray(t) {
        var r = -1
          , n = Array(t.size);
        return t.forEach(function(t, e) {
            n[++r] = [e, t]
        }),
        n
    }
    function setToArray(t) {
        var e = -1
          , r = Array(t.size);
        return t.forEach(function(t) {
            r[++e] = t
        }),
        r
    }
    var COMPARE_PARTIAL_FLAG$1 = 1
      , COMPARE_UNORDERED_FLAG$1 = 2
      , boolTag$3 = "[object Boolean]"
      , dateTag$3 = "[object Date]"
      , errorTag$2 = "[object Error]"
      , mapTag$5 = "[object Map]"
      , numberTag$3 = "[object Number]"
      , regexpTag$3 = "[object RegExp]"
      , setTag$5 = "[object Set]"
      , stringTag$3 = "[object String]"
      , symbolTag$3 = "[object Symbol]"
      , arrayBufferTag$3 = "[object ArrayBuffer]"
      , dataViewTag$4 = "[object DataView]"
      , symbolProto$2 = Symbol ? Symbol.prototype : void 0
      , symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : void 0;
    function equalByTag(t, e, r, n, i, a, o) {
        switch (r) {
        case dataViewTag$4:
            if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset)
                return !1;
            t = t.buffer,
            e = e.buffer;
        case arrayBufferTag$3:
            return !(t.byteLength != e.byteLength || !a(new Uint8Array$1(t), new Uint8Array$1(e)));
        case boolTag$3:
        case dateTag$3:
        case numberTag$3:
            return eq(+t, +e);
        case errorTag$2:
            return t.name == e.name && t.message == e.message;
        case regexpTag$3:
        case stringTag$3:
            return t == e + "";
        case mapTag$5:
            var s = mapToArray;
        case setTag$5:
            var u, s = s || setToArray;
            return t.size == e.size || n & COMPARE_PARTIAL_FLAG$1 ? (u = o.get(t)) ? u == e : (n |= COMPARE_UNORDERED_FLAG$1,
            o.set(t, e),
            u = equalArrays(s(t), s(e), n, i, a, o),
            o.delete(t),
            u) : !1;
        case symbolTag$3:
            if (symbolValueOf$1)
                return symbolValueOf$1.call(t) == symbolValueOf$1.call(e)
        }
        return !1
    }
    var COMPARE_PARTIAL_FLAG$2 = 1
      , objectProto$e = Object.prototype
      , hasOwnProperty$b = objectProto$e.hasOwnProperty;
    function equalObjects(t, e, r, n, i, a) {
        var o = r & COMPARE_PARTIAL_FLAG$2
          , s = getAllKeys(t)
          , u = s.length;
        if (u != getAllKeys(e).length && !o)
            return !1;
        for (var c = u; c--; ) {
            var f = s[c];
            if (!(o ? f in e : hasOwnProperty$b.call(e, f)))
                return !1
        }
        var h = a.get(t)
          , l = a.get(e);
        if (h && l)
            return h == e && l == t;
        for (var d = !0, v = (a.set(t, e),
        a.set(e, t),
        o); ++c < u; ) {
            var g, p = t[f = s[c]], y = e[f];
            if (!(void 0 === (g = n ? o ? n(y, p, f, e, t, a) : n(p, y, f, t, e, a) : g) ? p === y || i(p, y, r, n, a) : g)) {
                d = !1;
                break
            }
            v = v || "constructor" == f
        }
        return d && !v && (h = t.constructor) != (l = e.constructor) && "constructor"in t && "constructor"in e && !("function" == typeof h && h instanceof h && "function" == typeof l && l instanceof l) && (d = !1),
        a.delete(t),
        a.delete(e),
        d
    }
    var COMPARE_PARTIAL_FLAG$3 = 1
      , argsTag$3 = "[object Arguments]"
      , arrayTag$2 = "[object Array]"
      , objectTag$3 = "[object Object]"
      , objectProto$f = Object.prototype
      , hasOwnProperty$c = objectProto$f.hasOwnProperty;
    function baseIsEqualDeep(t, e, r, n, i, a) {
        var o = isArray(t)
          , s = isArray(e)
          , u = o ? arrayTag$2 : getTag$1(t)
          , s = s ? arrayTag$2 : getTag$1(e)
          , c = (u = u == argsTag$3 ? objectTag$3 : u) == objectTag$3
          , f = (s = s == argsTag$3 ? objectTag$3 : s) == objectTag$3;
        if ((s = u == s) && isBuffer(t)) {
            if (!isBuffer(e))
                return !1;
            c = !(o = !0)
        }
        return s && !c ? (a = a || new Stack,
        o || isTypedArray(t) ? equalArrays(t, e, r, n, i, a) : equalByTag(t, e, u, r, n, i, a)) : r & COMPARE_PARTIAL_FLAG$3 || (o = c && hasOwnProperty$c.call(t, "__wrapped__"),
        u = f && hasOwnProperty$c.call(e, "__wrapped__"),
        !o && !u) ? s && equalObjects(t, e, r, n, i, a = a || new Stack) : i(o ? t.value() : t, u ? e.value() : e, r, n, a = a || new Stack)
    }
    function baseIsEqual(t, e, r, n, i) {
        return t === e || (null == t || null == e || !isObjectLike(t) && !isObjectLike(e) ? t != t && e != e : baseIsEqualDeep(t, e, r, n, baseIsEqual, i))
    }
    var COMPARE_PARTIAL_FLAG$4 = 1
      , COMPARE_UNORDERED_FLAG$2 = 2;
    function baseIsMatch(t, e, r, n) {
        var i = r.length
          , a = i
          , o = !n;
        if (null == t)
            return !a;
        for (t = Object(t); i--; ) {
            var s = r[i];
            if (o && s[2] ? s[1] !== t[s[0]] : !(s[0]in t))
                return !1
        }
        for (; ++i < a; ) {
            var u = (s = r[i])[0]
              , c = t[u]
              , f = s[1];
            if (o && s[2]) {
                if (void 0 === c && !(u in t))
                    return !1
            } else {
                var h, l = new Stack;
                if (!(void 0 === (h = n ? n(c, f, u, t, e, l) : h) ? baseIsEqual(f, c, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, n, l) : h))
                    return !1
            }
        }
        return !0
    }
    function isStrictComparable(t) {
        return t == t && !isObject(t)
    }
    function getMatchData(t) {
        for (var e = keys(t), r = e.length; r--; ) {
            var n = e[r]
              , i = t[n];
            e[r] = [n, i, isStrictComparable(i)]
        }
        return e
    }
    function matchesStrictComparable(e, r) {
        return function(t) {
            return null != t && t[e] === r && (void 0 !== r || e in Object(t))
        }
    }
    function baseMatches(e) {
        var r = getMatchData(e);
        return 1 == r.length && r[0][2] ? matchesStrictComparable(r[0][0], r[0][1]) : function(t) {
            return t === e || baseIsMatch(t, e, r)
        }
    }
    function baseHasIn(t, e) {
        return null != t && e in Object(t)
    }
    function hasPath(t, e, r) {
        for (var n = -1, i = (e = castPath(e, t)).length, a = !1; ++n < i; ) {
            var o = toKey(e[n]);
            if (!(a = null != t && r(t, o)))
                break;
            t = t[o]
        }
        return a || ++n != i ? a : !!(i = null == t ? 0 : t.length) && isLength(i) && isIndex(o, i) && (isArray(t) || isArguments(t))
    }
    function hasIn(t, e) {
        return null != t && hasPath(t, e, baseHasIn)
    }
    var COMPARE_PARTIAL_FLAG$5 = 1
      , COMPARE_UNORDERED_FLAG$3 = 2;
    function baseMatchesProperty(r, n) {
        return isKey(r) && isStrictComparable(n) ? matchesStrictComparable(toKey(r), n) : function(t) {
            var e = get(t, r);
            return void 0 === e && e === n ? hasIn(t, r) : baseIsEqual(n, e, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3)
        }
    }
    function baseProperty(e) {
        return function(t) {
            return null == t ? void 0 : t[e]
        }
    }
    function basePropertyDeep(e) {
        return function(t) {
            return baseGet(t, e)
        }
    }
    function property(t) {
        return isKey(t) ? baseProperty(toKey(t)) : basePropertyDeep(t)
    }
    function baseIteratee(t) {
        return "function" == typeof t ? t : null == t ? identity : "object" == typeof t ? isArray(t) ? baseMatchesProperty(t[0], t[1]) : baseMatches(t) : property(t)
    }
    function createBaseFor(u) {
        return function(t, e, r) {
            for (var n = -1, i = Object(t), a = r(t), o = a.length; o--; ) {
                var s = a[u ? o : ++n];
                if (!1 === e(i[s], s, i))
                    break
            }
            return t
        }
    }
    var baseFor = createBaseFor();
    function baseForOwn(t, e) {
        return t && baseFor(t, e, keys)
    }
    function createBaseEach(a, o) {
        return function(t, e) {
            if (null != t) {
                if (!isArrayLike(t))
                    return a(t, e);
                for (var r = t.length, n = o ? r : -1, i = Object(t); (o ? n-- : ++n < r) && !1 !== e(i[n], n, i); )
                    ;
            }
            return t
        }
    }
    var baseEach = createBaseEach(baseForOwn);
    function castFunction(t) {
        return "function" == typeof t ? t : identity
    }
    function forEach(t, e) {
        return (isArray(t) ? arrayEach : baseEach)(t, castFunction(e))
    }
    function arrayEvery(t, e) {
        for (var r = -1, n = null == t ? 0 : t.length; ++r < n; )
            if (!e(t[r], r, t))
                return !1;
        return !0
    }
    function baseEvery(t, n) {
        var i = !0;
        return baseEach(t, function(t, e, r) {
            return i = !!n(t, e, r)
        }),
        i
    }
    function every(t, e, r) {
        return (isArray(t) ? arrayEvery : baseEvery)(t, baseIteratee(e = r && isIterateeCall(t, e, r) ? void 0 : e))
    }
    function baseFilter(t, n) {
        var i = [];
        return baseEach(t, function(t, e, r) {
            n(t, e, r) && i.push(t)
        }),
        i
    }
    function filter(t, e) {
        return (isArray(t) ? arrayFilter : baseFilter)(t, baseIteratee(e))
    }
    function createFind(a) {
        return function(t, e, r) {
            var n, i = Object(t);
            return isArrayLike(t) || (n = baseIteratee(e),
            t = keys(t),
            e = function(t) {
                return n(i[t], t, i)
            }
            ),
            -1 < (e = a(t, e, r)) ? i[n ? t[e] : e] : void 0
        }
    }
    var nativeMax$1 = Math.max;
    function findIndex(t, e, r) {
        var n = null == t ? 0 : t.length;
        return n ? ((r = null == r ? 0 : toInteger(r)) < 0 && (r = nativeMax$1(n + r, 0)),
        baseFindIndex(t, baseIteratee(e), r)) : -1
    }
    var find = createFind(findIndex);
    function baseMap(t, n) {
        var i = -1
          , a = isArrayLike(t) ? Array(t.length) : [];
        return baseEach(t, function(t, e, r) {
            a[++i] = n(t, e, r)
        }),
        a
    }
    function map(t, e) {
        return (isArray(t) ? arrayMap : baseMap)(t, baseIteratee(e))
    }
    function forIn(t, e) {
        return null == t ? t : baseFor(t, castFunction(e), keysIn)
    }
    var mapTag$6 = "[object Map]"
      , setTag$6 = "[object Set]"
      , objectProto$g = Object.prototype
      , hasOwnProperty$d = objectProto$g.hasOwnProperty;
    function isEmpty(t) {
        if (null != t) {
            if (isArrayLike(t) && (isArray(t) || "string" == typeof t || "function" == typeof t.splice || isBuffer(t) || isTypedArray(t) || isArguments(t)))
                return !t.length;
            var e, r = getTag$1(t);
            if (r == mapTag$6 || r == setTag$6)
                return !t.size;
            if (isPrototype(t))
                return !baseKeys(t).length;
            for (e in t)
                if (hasOwnProperty$d.call(t, e))
                    return !1
        }
        return !0
    }
    function isEqual(t, e) {
        return baseIsEqual(t, e)
    }
    function isUndefined(t) {
        return void 0 === t
    }
    function baseSome(t, n) {
        var i;
        return baseEach(t, function(t, e, r) {
            return !(i = n(t, e, r))
        }),
        !!i
    }
    function some(t, e, r) {
        return (isArray(t) ? arraySome : baseSome)(t, baseIteratee(e = r && isIterateeCall(t, e, r) ? void 0 : e))
    }
    var projections = {}
      , Projection = function() {
        function t(t, e, r, n) {
            this.project = e,
            this.unproject = r,
            this.getResolution = n,
            projections[t] = this
        }
        return t.prototype.moveWithPixel = function(t, e, r) {
            var r = this.getResolution(r)
              , n = e[0] * r
              , e = e[1] * r
              , r = this.project(t[0], t[1]);
            return this.unproject(r[0] + n, r[1] + e)
        }
        ,
        t.prototype.moveWithPos = function(t, e) {
            return t = [(t = this.project(t[0], t[1]))[0] + e[0], t[1] + e[1]],
            this.unproject(t[0], t[1])
        }
        ,
        t
    }()
      , ProjectionManager = {
        getProjection: function(t) {
            return projections[t]
        }
    }
      , LngLat = new Projection("EPSG:4326",function(t, e) {
        return [t, e]
    }
    ,function(t, e) {
        return [t, e]
    }
    ,function(t) {
        return .703125 / Math.pow(2, t)
    }
    )
      , SphericalMercator = function() {
        var n = Math.PI / 180
          , r = 180 / Math.PI
          , i = 6378137;
        return new Projection("EPSG:3857",function(t, e) {
            var r = 85.0511287798
              , r = (e = Math.max(Math.min(r, e), -r),
            t * n)
              , t = e * n
              , t = Math.log(Math.tan(Math.PI / 4 + t / 2));
            return [r * i, t * i]
        }
        ,function(t, e) {
            return [t / i * r, (2 * Math.atan(Math.exp(e / i)) - Math.PI / 2) * r]
        }
        ,function(t) {
            return 156543.03392804097 / Math.pow(2, t)
        }
        )
    }()
      , LCS = function() {
        function t() {
            this.hg = [-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244],
            this.cg = 128,
            this.vg = 128,
            this.lg = (this.hg[2] - this.hg[0]) / this.cg,
            this.dg = (this.hg[3] - this.hg[1]) / this.vg
        }
        return t.prototype.setMap = function(t) {
            this.map = t
        }
        ,
        t.prototype.getSize = function() {
            return [this.lg, this.dg]
        }
        ,
        t.prototype.getNum = function() {
            return [this.cg, this.vg]
        }
        ,
        t.prototype.getLocalByLnglat = function(t) {
            var e = (e = ProjectionManager.getProjection("EPSG:3857")).project.apply(e, t);
            return this.getLocalByCoord(e)
        }
        ,
        t.prototype.getLocalByCoord = function(t) {
            var e = Math.floor(t[0] / this.lg)
              , r = Math.floor(t[1] / this.dg)
              , n = this.getLocalCenterByXY(e, r);
            return {
                Sa: [t[0] - n.center[0], t[1] - n.center[1]],
                x: e,
                y: r,
                center: n.center,
                Ro: n.Ro
            }
        }
        ,
        t.prototype.getLocalCenterByXY = function(t, e) {
            var r = {
                x: t,
                y: e,
                center: [0, 0],
                Ro: [0, 0, 0, 0]
            };
            return r.center = [(t + .5) * this.lg, (e + .5) * this.dg],
            r.Ro = [t * this.lg, e * this.dg, (t + 1) * this.lg, (e + 1) * this.dg],
            r
        }
        ,
        t.prototype.getDeltaCoord = function(t) {
            var e = this.getLocalByCoord(t);
            return [t[0] - e.center[0], t[1] - e.center[1]]
        }
        ,
        t
    }()
      , lcs = new LCS
      , E4326 = ProjectionManager.getProjection("EPSG:4326")
      , E3857 = ProjectionManager.getProjection("EPSG:3857")
      , HALF_WORLD_SIZE = 20037508.342789244
      , LngLat$1 = {
        Ro: [-180, -90, 180, 90],
        project: function(t, e, r) {
            return t = E4326.project(t, e),
            this.transform(t[0], t[1], r)
        },
        unproject: function(t, e, r) {
            return t = this.Xs(t, e, r),
            E4326.unproject(t[0], t[1])
        },
        transform: function(t, e, r) {
            var r = void 0 === r ? 180 : 256 << r
              , i = this.Ro[2] - this.Ro[0]
              , a = this.Ro[3] - this.Ro[1];
            return [t = (t - this.Ro[0]) / i * (2 * r), e = r - (e - this.Ro[1]) / a * r]
        },
        Xs: function(t, e, r) {
            return [t = 360 * (t / (2 * (r = void 0 === r ? 180 : 256 << r)) - .5), e = 180 * -(e / r - .5)]
        },
        nt: function(t, e, r) {
            return this.Xs(t, e, r)
        },
        wu: function(t, e, r) {
            return this.Xs(t, e, r)
        },
        yo: function(t, e, r) {
            var n = 0 < t / this.Ro[3] ? Math.abs(Math.floor(t / this.Ro[3])) : Math.abs(Math.ceil(t / this.Ro[3]))
              , i = 0 < e / this.Ro[3] ? Math.abs(Math.floor(e / this.Ro[3])) : Math.abs(Math.ceil(e / this.Ro[3]))
              , a = t % this.Ro[3]
              , o = e % this.Ro[3]
              , a = this.transform(a, o, r)
              , o = (t = this.wu(t, t, r)[0] * n + a[0],
            e = this.wu(e, e, r)[1] * i + a[1],
            this.transform(0, 0, r));
            return [t - o[0], e - o[1]]
        },
        Bb: function(t, e, r) {
            return r.X(t, e)
        },
        qb: function(t, e, r) {
            return r.H(t, e)
        },
        Gd: function(t, e, r, n) {
            var i = n.X(t[0], t[1]);
            return [(n = n.X(t[0] + e, t[1] + r))[0] - i[0], n[1] - i[1]]
        }
    }
      , SphericalMercator$1 = {
        Ro: [-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244],
        project: function(t, e, r) {
            return t = E3857.project(t, e),
            this.transform(t[0], t[1], r)
        },
        unproject: function(t, e, r) {
            return t = this.Xs(t, e, r),
            E3857.unproject(t[0], t[1])
        },
        transform: function(t, e, r) {
            t = Math.min(20037508.342789244, Math.max(t, -20037508.342789244)),
            e = Math.min(20037508.342789244, Math.max(e, -20037508.342789244)),
            r = void 0 === r ? 40075016.68557849 : 256 * Math.pow(2, r);
            var n = this.Ro[2] - this.Ro[0]
              , i = this.Ro[3] - this.Ro[1];
            return [t = (t - this.Ro[0]) / n * r, e = r - (e - this.Ro[1]) / i * r]
        },
        Xs: function(t, e, r) {
            return [t = (t / (r = void 0 === r ? 40075016.68557849 : 256 * Math.pow(2, r)) - .5) * this.Ro[2] * 2, e = -(e / r - .5) * this.Ro[2] * 2]
        },
        nt: function(t, e, r, n) {
            return [t = this.Xs(t, e, r)[0] - this.Ro[0], e = this.Ro[2] - this.Xs(t, e, r)[1]]
        },
        wu: function(t, e, r, n) {
            var i = n.center
              , a = n.size
              , n = (n.rotation || 0) / 180 * Math.PI
              , e = (t = this.transform(t, e, r))[0]
              , t = t[1]
              , r = e - (i = this.transform(i[0], i[1], r))[0]
              , e = t - i[1]
              , t = Math.sqrt(Math.pow(r, 2) + Math.pow(e, 2))
              , i = 0 == e ? Math.PI / 2 : Math.atan(Math.abs(r / e))
              , i = r * e <= 0 ? i + n : i - n
              , n = 0 < e ? 1 : -1;
            return [a[0] / 2 + t * Math.sin(0 < r ? i : -i), a[1] / 2 + t * Math.cos(i) * n]
        },
        yo: function(t, e, r, n) {
            var i = 0 < t / this.Ro[3] ? Math.abs(Math.floor(t / this.Ro[3])) : Math.abs(Math.ceil(t / this.Ro[3]))
              , a = 0 < e / this.Ro[3] ? Math.abs(Math.floor(e / this.Ro[3])) : Math.abs(Math.ceil(e / this.Ro[3]))
              , o = t % this.Ro[3]
              , s = e % this.Ro[3]
              , o = this.transform(o, s, r)
              , r = (s = this.transform(0, 0, r))[0]
              , s = s[1];
            return [(t = r * i + o[0]) - r, (e = s * a + o[1]) - s]
        },
        Bb: function(t, e, r) {
            return r.X(t, e)
        },
        qb: function(t, e, r) {
            return r.H(t, e)
        },
        Gd: function(t, e, r, n) {
            var i = n.X(t[0], t[1]);
            return [(n = n.X(t[0] + e, t[1] + r))[0] - i[0], n[1] - i[1]]
        }
    }
      , transform = {
        "EPSG:4326": LngLat$1,
        "EPSG:3857": SphericalMercator$1
    }
      , LocalZoom = 13
      , LocalTileZoom = 12
      , AMapStyleSource = ""
      , zoomRange = [2, 26]
      , CONSTS = {
        ID: "__id__",
        Rp: zoomRange[1],
        Mp: zoomRange[0],
        jp: .8,
        Pp: .2,
        YM: 5,
        KM: {
            dom: "div",
            id: "_amap_custom_labellayer_div_",
            className: "amap-layer",
            style: {
                cssText: "position:absolute;top:0;left:0;",
                zIndex: "",
                width: "",
                height: "",
                visible: ""
            }
        },
        Dp: {
            Op: 180,
            Ad: 70,
            Td: 360,
            t1: 300,
            e1: 30,
            Bd: Math.PI / 10
        },
        XM: {
            top: 3,
            right: 3,
            bottom: 3,
            left: 3
        },
        JM: {
            ZM: "top",
            QM: "right",
            tj: "bottom",
            LEFT: "left",
            nj: "middle",
            ij: "center",
            ej: "alphabetic"
        },
        oj: {
            CLICK: "click",
            MOUSEOVER: "mouseover",
            MOUSEOUT: "mouseout",
            MOUSEMOVE: "mousemove",
            MOUSEDOWN: "mousedown",
            MOUSEUP: "mouseup",
            aj: "touchstart",
            uj: "touchend"
        },
        sj: {
            rank: 1,
            angle: 0,
            opacity: 1,
            offset: [0, 0],
            zooms: zoomRange,
            icon: {
                type: "image",
                image: "://visuallocal.amap.com/public/poi-marker.png",
                clipOrigin: [0, 0],
                clipSize: [36, 36],
                size: [36, 36],
                anchor: "bottom-center",
                angel: 0,
                retina: !0,
                zooms: zoomRange
            },
            text: {
                type: "billboard",
                direction: "top",
                offset: [0, 0],
                zooms: zoomRange,
                style: {
                    fj: 6,
                    fontFamily: "sans-serif",
                    fontSize: 12,
                    fontWeight: "normal",
                    fillColor: [0, 0, 0, 1],
                    strokeWidth: 0,
                    strokeColor: [.988, .988, .988, 1],
                    borderColor: "transparent",
                    padding: [3, 3, 3, 3],
                    backgroundColor: ""
                }
            }
        },
        hj: {
            cj: {
                opacity: .2
            },
            vj: "fadeIn",
            lj: "fadeOut",
            dj: {
                bj: "start",
                RUNNING: "running",
                pj: "complete"
            },
            yj: {
                mj: "opacity",
                gj: "size"
            }
        },
        _d: 3,
        wj: "_AMap_sdf_com_words",
        Mj: 128,
        pc: ["://sdf.amap.com", "://sdf01.amap.com", "://sdf02.amap.com", "://sdf03.amap.com", "://sdf04.amap.com"],
        sp: 4,
        Cd: .78125,
        Ld: 205 / 256,
        Aj: {
            kj: "纹理加载失败，请重试",
            Oj: "资源加载失败，请重试"
        },
        xj: "bufferChanged",
        Ij: "frameBufferChanged",
        Tj: "combineFrameBufferChanged",
        ic: 1,
        ud: 13,
        Cj: 12,
        Ej: "__icon_combination",
        Nj: "__text_combination",
        Lj: {
            file: {
                0: "://vdata.amap.com/style_icon/2.0/icon-normal-big.png",
                1: "://vdata.amap.com/style_icon/2.0/icon-biz-big.png"
            },
            size: [40, 40],
            Rj: 10
        },
        Kp: {
            buffer: 3,
            family: "ios9",
            size: 24
        },
        _n: {
            Uj: [0, 0, 0, 1],
            Gp: [0, 0, 0, 0]
        },
        gH: "sdf",
        RB: "sdfJson",
        FN: "version"
    }
      , DangerousFontSize = (function(t) {
        t.nebula = "nebula",
        t.nebulaLabel = "nebulaLabel"
    }(exports.n0 || (exports.n0 = {})),
    24)
      , EnumLabelFragType = (function(t) {
        t[t.dynamic = 0] = "dynamic",
        t[t.icon = 1] = "icon"
    }(exports.cY || (exports.cY = {})),
    {
        icon: 0,
        bg: 6,
        tq: 8,
        text: 2
    })
      , defaultCap = ["butt", "butt"]
      , tmp1 = (function(t) {
        t.BLOB = "blob",
        t.TOLOAD = "toload",
        t.LOADING = "loading",
        t.LOADED = "loaded",
        t.UNLOADED = "unloaded",
        t.ERROR = "error",
        t.RELOADING = "reloading",
        t.UNCOMBINED = "uncombined",
        t.COMBINING = "combining",
        t.COMBINED = "combined"
    }(exports.uc || (exports.uc = {})),
    4294901760)
      , tmp2 = 65535;
    function getUploadName(t, e) {
        return ((t = tmp1 - (t << 16)) + (e = tmp2 - e)).toString(16)
    }
    function staticSDFTileKeyToKey(t) {
        var e = (t = map(t.split(","), function(t) {
            return parseInt(t, 10)
        }))[1]
          , r = t[2];
        return t[0] < 10 ? "lesszoom10" : (10 !== t[0] && (12 === t[0] ? (e = Math.floor(e / 4),
        r = Math.floor(r / 4)) : 14 === t[0] ? (e = Math.floor(e / 16),
        r = Math.floor(r / 16)) : 15 === t[0] && (e = Math.floor(e / 32),
        r = Math.floor(r / 32))),
        getUploadName(e, r))
    }
    var labelsUtil = {
        Bj: function(t) {
            var e, r = {};
            for (e in t = void 0 === t ? {} : t)
                t.hasOwnProperty(e) && (r[e] = 1);
            return r
        },
        zj: function(t, e) {
            t.gs = e,
            t.qj = e.options || {},
            t.Wj = e.Wj || {},
            t.Fs = e.Fs || {},
            t.Gj = e.Gj || {},
            t.Hj = e.Hj || {},
            t.Vj = e.Vj || {},
            t.$j = e.$j || 0
        },
        Yj: function(t, e) {
            void 0 === t && (t = [NaN, NaN, NaN, NaN]),
            void 0 === e && (e = [0, 0, 0, 1]);
            for (var r = 0; r < t.length; r++) {
                var n = t[r];
                isNaN(n) && (t[r] = e[r])
            }
            return t
        },
        Kj: function(t) {
            return [((16711680 & t) >> 16) / 255, ((65280 & t) >> 8) / 255, (255 & t) / 255, 1]
        },
        Xj: function(t, e) {
            for (var r = [], n = (e = void 0 === e ? {} : e).qw, i = e.Aw, a = e.complete, o = 0, s = t; o < s.length; o++) {
                var u = s[o]
                  , u = new Promise(u);
                r.push(u)
            }
            var c = 0;
            Promise.all(r).then(function() {
                n && n.apply(void 0, arguments),
                a && !c && (c = 1,
                a.apply(void 0, arguments))
            }).catch(function() {
                i && i.apply(void 0, arguments),
                a && !c && (c = 1,
                a.apply(void 0, arguments))
            })
        },
        Jj: function(t, e) {
            var r = t[0]
              , n = void 0 === (n = t[1]) ? 0 : n
              , i = e[0]
              , a = void 0 === (a = e[1]) ? 0 : a;
            return (void 0 === r ? 0 : r) <= (i = void 0 === i ? 0 : i) ? i <= n ? a < n ? [i, a] : [i, n] : null : labelsUtil.Jj(e, t)
        },
        measureText: function(t, e, r, n) {
            if (void 0 === e && (e = ""),
            "3D" === (n = void 0 === n ? "3D" : n))
                return t.measureText(e, r)
        },
        lnglatToContainer: function(t, e) {
            return (void 0 === (e = e.zoom) ? 20 : e) < LocalZoom ? t : (e = lcs.getLocalByCoord(t),
            vector.Ip(t, e.center))
        },
        Sd: function(t, e) {
            var r = t[0]
              , t = void 0 === (t = t[1]) ? 0 : t
              , n = e[0]
              , e = void 0 === (e = e[1]) ? 0 : e
              , n = Math.abs((void 0 === n ? 0 : n) - (void 0 === r ? 0 : r))
              , r = Math.abs(e - t);
            return Math.sqrt(Math.pow(n, 2) + Math.pow(r, 2))
        },
        getAngle: function(t, e) {
            var r = t[0]
              , t = t[1]
              , n = (void 0 === (n = e[0]) ? 0 : n) - (void 0 === r ? 0 : r)
              , r = (void 0 === (e = e[1]) ? 0 : e) - (void 0 === t ? 0 : t);
            return 0 == n ? r < 0 ? 3 * Math.PI / 2 : Math.PI / 2 : 0 === (e = Math.atan(r / n)) || 0 < e ? 0 <= n ? e : e + Math.PI : 0 < n ? 2 * Math.PI + e : Math.PI + e
        },
        Fd: function(t, e, r) {
            for (var n = t[0], i = void 0 === n ? 0 : n, a = void 0 === (n = t[1]) ? 0 : n, o = (void 0 === (t = e[0]) ? 0 : t) - i, s = (void 0 === (n = e[1]) ? 0 : n) - a, u = [], c = 0; c < r; )
                u.push([i + o / (r + 1) * (c + 1), a + s / (r + 1) * (c + 1)]),
                c++;
            return u
        },
        OG: function(t, e, r) {
            return 0 !== r ? [t[0] + (e[0] - t[0]) * r, t[1] + (e[1] - t[1]) * r] : t
        },
        Ed: function(t, e) {
            void 0 === e && (e = "ch");
            var r, n, i, a = (t = void 0 === t ? [] : t).length;
            return !!a && (r = t[0],
            t = t[4 <= a ? Math.floor(a / 4 * 3) : a - 1],
            a = r[0],
            r = r[1],
            i = [(n = t[0]) - a, (t = t[1]) - r],
            ("ch" === e && 1 < Math.abs((t - r) / (n - a)) ? vector.Zj(i, [0, 1]) : vector.Zj(i, [1, 0])) < 0)
        },
        Nd: function(t, e, r) {
            var n, i = t[0], t = t[1], a = e[0], o = ((e = e[1]) - t) / (a - i), a = [a - i, e - t];
            return 1 < Math.abs(o) && "x" !== r ? (n = 0 < vector.Zj(a, [0, -1]) ? vector.Qj(a, [0, -1]) : vector.Qj(a, [0, 1]),
            0 < o && (n = -n)) : (n = 0 < vector.Zj(a, [1, 0]) ? vector.Qj(a, [1, 0]) : vector.Qj(a, [-1, 0]),
            o < 0 && (n = -n)),
            n
        },
        Od: function(t, e, r) {
            var n = r * Math.sin(e)
              , r = r * Math.cos(e);
            return [t[0] + r, t[1] + n]
        },
        jd: function(t, e, r, n) {
            var t = vector.Ip(t, e)
              , i = vector.length(t)
              , r = vector.Ip(r, e)
              , a = vector.length(r)
              , t = vector.Zj(t, r)
              , t = Math.acos(t / (i * a))
              , a = Math.PI - t
              , t = i * Math.sin(a)
              , i = i * Math.cos(a)
              , a = Math.sqrt(Math.pow(n, 2) - Math.pow(t, 2)) - i
              , n = 0 === r[0] ? 0 < r[1] ? Math.PI / 2 : -Math.PI / 2 : Math.atan(r[1] / r[0])
              , t = Math.abs(a * Math.sin(n))
              , i = a * Math.cos(n)
              , a = vector.Zj(r, [1, 0])
              , n = vector.Zj(r, [0, 1]);
            return vector.add(e, [0 <= a ? i : -i, 0 <= n ? t : -t])
        },
        rank: function(t) {
            for (var e = [], r = 0; r < t.length; r++) {
                var n = parseFloat(t[r]);
                n < 0 ? (t.splice(r--, 1),
                e.push(n)) : t[r] = n
            }
            return t.sort(function(t, e) {
                return t - e
            }),
            e.concat(t)
        },
        $p: function(t) {
            var e = CONSTS.Mp
              , r = CONSTS.Rp;
            return t[1] >= zoomRange[1] && (t[1] = r),
            t[0] <= zoomRange[0] && (t[0] = e),
            t
        },
        toString: function(t, e) {
            void 0 === e && (e = 4);
            var r = "";
            if (t)
                for (var n = 0, i = t; n < i.length; n++) {
                    var a = i[n];
                    r += (a + "").length < e ? a : a.toFixed(e)
                }
            return r
        },
        xf: function(t, e) {
            var r, n, i, a = [], o = e.ja, s = e.Fa, u = e.Oa, c = e.Ea;
            for (r in t)
                t.hasOwnProperty(r) && r !== CONSTS.gH && r !== CONSTS.FN && r !== CONSTS.RB && ("shields" === r || !o || (i = r.split("-"),
                n = parseInt(i[1], 10),
                i = parseInt(i[2], 10),
                o <= n && n <= u && s <= i && i <= c)) && a.push(t[r]);
            return a.length ? a : t
        },
        EQ: function(t, e) {
            for (var r = [], n = e.length, i = 0; i < n - 1; i++) {
                var a = t.substring(e[i], e[i + 1]);
                r.push(a)
            }
            return n ? r : t.split("")
        },
        aQ: function(t) {
            for (var e = [], r = 0; r < t.length; r++) {
                for (var n = t[r], i = [], a = 0; a < n.length; a++) {
                    var o = n.charCodeAt(a);
                    i.push(o)
                }
                var s = i.join("|");
                e.push(s)
            }
            return e
        },
        tQ: function(t, e, r) {
            var n = ""
              , i = []
              , a = "";
            if (t.name) {
                if (t.JQ && 0 < t.JQ.length)
                    n = getSpiltLineWithSpiltIndex(t.name, t.JQ);
                else if (r) {
                    var o = r.lineBreak(t.name, {
                        from: "labelsLayer",
                        CO: []
                    })
                      , s = 0
                      , u = "";
                    if (2 <= o.oQ.length) {
                        for (var c = 1, f = o.oQ.length - 1; c < f; c++)
                            u += t.name.slice(s, o.oQ[c]) + " ",
                            s = o.oQ[c];
                        u += t.name.slice(s)
                    } else
                        u = t.name;
                    n = u
                } else
                    n = t.name;
                a = "ch"
            } else {
                switch (e) {
                case "en":
                    n = t.name_en,
                    i = t.iQ,
                    a = "en";
                    break;
                case "local":
                    n = t.QQ,
                    i = t.$G,
                    a = t.CQ;
                    break;
                default:
                    n = t.BQ,
                    a = "ch"
                }
                n || (t.name_en ? (n = t.name_en,
                i = t.iQ,
                a = "en") : t.QQ && (n = t.QQ,
                i = t.$G,
                a = t.QQ))
            }
            return {
                name: n,
                $G: i,
                type: a
            }
        }
    }
      , vector = {
        add: function(t, e) {
            for (var r = [], n = 0; n < t.length; n++)
                r[n] = t[n] + e[n];
            return r
        },
        Ip: function(t, e) {
            for (var r = [], n = 0; n < t.length; n++)
                r.push(t[n] - e[n]);
            return r
        },
        multiply: function(t, e) {
            for (var r = [], n = 0, i = t; n < i.length; n++) {
                var a = i[n];
                r.push(a * e)
            }
            return r
        },
        Up: function(t, e) {
            for (var r = [], n = 0; n < t.length; n++)
                r[n] = t[n] / e;
            return r
        },
        tA: function(t) {
            return this.multiply(t, -1)
        },
        Zj: function(t, e) {
            var r = t[0]
              , t = t[1]
              , n = e[0];
            return (void 0 === r ? 0 : r) * (void 0 === n ? 0 : n) + (void 0 === t ? 0 : t) * (void 0 === (e = e[1]) ? 0 : e)
        },
        Qj: function(t, e) {
            var r = vector.Zj(t, e)
              , t = vector.length(t)
              , e = vector.length(e);
            return Math.acos(r / (t * e))
        },
        length: function(t) {
            var e = t[0]
              , t = t[1];
            return Math.sqrt(Math.pow(e, 2) + Math.pow(t, 2))
        }
    }
      , noop = function(t) {};
    function getSpiltLineWithSpiltIndex(t, e) {
        if (e.shift(),
        0 === e.length)
            return t;
        for (var r = "", n = 0, i = 0, a = e.length; i < a; i++)
            r += t.substr(n, e[i] - n) + " ",
            n = e[i];
        return r + t.substr(e[e.length - 1])
    }
    var XHR = {
        send: function(t, e) {
            void 0 === e && (e = {});
            var r = new XMLHttpRequest
              , i = void 0 === (n = e.qw) ? noop : n
              , a = void 0 === (n = e.Aw) ? noop : n
              , n = e.Me
              , o = e.method
              , e = e.content;
            return r.onreadystatechange = function() {
                if (4 === r.readyState && 200 === r.status) {
                    var t = r.response;
                    try {
                        i(t)
                    } catch (t) {
                        a(t)
                    }
                } else
                    404 === r.status && (r.abort(),
                    a(Error("404")))
            }
            ,
            r.onerror = function(t) {
                r.abort(),
                a(t)
            }
            ,
            r.open(o || "GET", t, !0),
            r.responseType = n || "json",
            r.send(e || void 0),
            r
        }
    }
      , scale = Browser.scale
      , LabelsRenderUtil = {
        getBounds: function(t, e) {
            var r = (e = void 0 === e ? {} : e).zoom
              , n = e.centerCoord
              , i = (e.view,
            [150 * scale, 150 * scale, 150 * scale, 150 * scale])
              , a = (t = t.boundsCoord)[0]
              , o = t[1]
              , s = t[2]
              , t = t[3]
              , u = this.nt(0, 0, r, e)
              , c = vector.Ip(this.nt(i[0], i[1], r, e), u)
              , i = vector.Ip(this.nt(i[2], i[3], r, e), u)
              , u = (e = LocalZoom <= r ? n : [0, 0])[0]
              , r = e[1];
            return [[a - u - Math.abs(i[1]), o - r - Math.abs(i[0])], [s - u + Math.abs(c[1]), t - r + Math.abs(c[0])]]
        },
        gz: function(t, e) {
            var r = e[0]
              , e = e[1]
              , n = t[0]
              , t = t[1]
              , i = n - r[0]
              , r = t - r[1]
              , n = e[0] - n
              , e = e[1] - t;
            return 0 <= i && 0 <= r && 0 <= n && 0 <= e
        },
        getRank: function(t, e) {
            var r = (e = void 0 === e ? {} : e).forceShow
              , e = e._z
              , t = (t.data || {}).rank || 1;
            return void 0 !== r && r ? t - 1e5 : (void 0 === e ? 0 : e) / 100 * 2e5 + t
        },
        wu: function(t, e, r, n) {
            var i, a, o, s, u, c;
            if (void 0 === t && (t = 0),
            void 0 === e && (e = 0),
            n)
                return u = n.viewState,
                s = n.size,
                i = n.transform,
                a = n.view,
                o = n.viewMode,
                c = n.centerCoord,
                n = void 0 === (n = n.positionType) ? "relative" : n,
                "2D" === o ? (o = {
                    center: u.centerCoord,
                    rotation: u.rotation,
                    size: s
                },
                u = (s = u.optimalZoom >= LocalZoom ? c : [0, 0])[0],
                c = s[1],
                i.wu(t + u, e + c, r, o)) : "relative" === n ? a.H(t, e) : a._u(t, e)
        },
        r0: function(t, e, r, n, i) {
            var a, o, s, u, c, f;
            if (void 0 === t && (t = 0),
            void 0 === e && (e = 0),
            void 0 === r && (r = 0),
            i)
                return c = i.viewState,
                u = i.size,
                a = i.transform,
                o = i.view,
                s = i.viewMode,
                f = i.centerCoord,
                i = void 0 === (i = i.positionType) ? "relative" : i,
                "2D" === s ? (s = {
                    center: c.centerCoord,
                    rotation: c.rotation,
                    size: u
                },
                c = (u = c.optimalZoom >= LocalZoom ? f : [0, 0])[0],
                f = u[1],
                a.wu(t + c, e + f, n, s)) : "relative" === i ? o.H(t, e, r) : o._u(t, e, r)
        },
        kz: function(t, e, r, n) {
            if (void 0 === t && (t = []),
            n = (n = void 0 === n ? {} : n).centerCoord,
            e < LocalZoom && LocalZoom <= r) {
                for (var i = n[0], a = n[1], o = [], s = 0, u = t; s < u.length; s++) {
                    var c = u[s];
                    o.push([c[0] - i, c[1] - a])
                }
                return o
            }
            return t
        },
        nt: function(t, e, r, n) {
            void 0 === t && (t = 0),
            void 0 === e && (e = 0);
            var i = n.view
              , a = n.transform;
            return "2D" === n.viewMode ? a.nt(t, e, r) : i.X(t, e)
        },
        MG: function(t, e) {
            return t < LocalZoom - 1 ? [0, 0] : e
        }
    };
    function isLngLat(t) {
        return t && "AMap.LngLat" === t.className
    }
    function isPixel(t) {
        return t && "AMap.Pixel" === t.className
    }
    function isSize(t) {
        return t && "AMap.Size" === t.className
    }
    function isLayer(t) {
        return Boolean(t && t.el && "AMap.Layer" === t.el)
    }
    function isVectorLayer(t) {
        return t && "AMap.VectorLayer" === t.CLASS_NAME
    }
    function isOverlay(t) {
        return t && t.className && Util.startsWith(t.className, "Overlay")
    }
    function isOverlayGroup(t) {
        return t && ("Overlay.OverlayGroup" === t.className || "Overlay.GeoJSON" === t.className)
    }
    function isCircleMarker(t) {
        return t && t.className && "Overlay.CircleMarker" === t.className
    }
    function isPolyline(t) {
        return t && t.className && "Overlay.Polyline" === t.className
    }
    function isBezierCurve(t) {
        return t && t.className && "Overlay.BezierCurve" === t.className
    }
    function isBounds(t) {
        return t && "AMap.Bounds" === t.className
    }
    function isNumber(t) {
        return "number" == typeof (t = +t) && !isNaN(t)
    }
    function isNumberArray(t) {
        return Array.isArray(t) && isNumber(t[0])
    }
    function isNumberArrayArray(t) {
        return Array.isArray(t) && isNumberArray(t[0])
    }
    function isNumberArrayArrayArray(t) {
        return Array.isArray(t) && isNumberArrayArray(t[0])
    }
    function isNumberArrayArrayArrayArray(t) {
        return Array.isArray(t) && isNumberArrayArrayArray(t[0])
    }
    function isLnglatLike(t) {
        return isLngLat(t) || isNumberArray(t)
    }
    function isLnglatLikeArray(t) {
        return Array.isArray(t) && isLnglatLike(t[0])
    }
    function isLnglatLikeArrayArray(t) {
        return Array.isArray(t) && isLnglatLikeArray(t[0])
    }
    function isLnglatLikeArrayArrayArray(t) {
        return Array.isArray(t) && isLnglatLikeArrayArray(t[0])
    }
    function isInnerLabelsLayer(t) {
        return t && "AMap.Inner.LabelsLayer" === t.CLASS_NAME
    }
    function isUndefined$1(t) {
        return void 0 === t
    }
    function calcTileMectorBounds(t, e, r) {
        var n = ProjectionManager.getProjection("EPSG:3857")
          , a = 180 / (t = Math.pow(2, t))
          , i = (e = (i = 360 / t) * e - 180) + i
          , r = (t = a * (t - r - 1) - 90) + a;
        return [e = (a = n.project(e, t))[0], t = a[1], (a = n.project(i, r))[0], a[1]]
    }
    function parseLngLatData(t) {
        if (Array.isArray(t)) {
            var e;
            if (!Array.isArray(t[0]))
                return "string" == (e = typeof t[0]) || "number" == e ? new LngLat$2(t[0],t[1]) : t;
            for (var r = 0; r < t.length; r += 1)
                t[r] = parseLngLatData(t[r])
        }
        return t
    }
    function jsonLngLatData(t) {
        if (isLngLat(t))
            return [t.getLng(), t.getLat()];
        if (Array.isArray(t)) {
            for (var e = t.slice(0), r = 0; r < e.length; r += 1)
                e[r] = jsonLngLatData(e[r]);
            return e
        }
        return t
    }
    var Coordinate = {
        lr: function(t, e) {
            for (var r = 1 / 0, n = 0, i = 1, a = e.length; i < a; n = i,
            i += 1)
                r = Math.min(r, this.ur(t, [e[n], e[i]]));
            return Math.sqrt(r)
        },
        ur: function(t, e) {
            return this.cr(t, this.closestOnSegment(t, e))
        },
        cr: function(t, e) {
            var r = t[0] - e[0];
            return r * r + (t = t[1] - e[1]) * t
        },
        pr: function(t, e, r, n) {
            var i, a;
            return n = n || 1e-6,
            r[0] === e[0] ? (i = Math.min(e[1], r[1]),
            a = Math.max(e[1], r[1]),
            Math.abs(t[0] - r[0]) < n && t[1] >= i && t[1] <= a) : (i = Math.min(e[0], r[0]),
            a = Math.max(e[0], r[0]),
            r = (r[1] - e[1]) / (r[0] - e[0]) * (t[0] - e[0]) + e[1],
            Math.abs(r - t[1]) < n && t[0] >= i && t[0] <= a)
        },
        closestOnSegment: function(t, e) {
            var r, n = t[0], t = t[1], i = e[0], e = e[1], a = i[0], i = i[1], o = e[0], s = o - a, u = (e = e[1]) - i, t = (n = 0 == s && 0 == u ? 0 : (s * (n - a) + u * (t - i)) / (s * s + u * u || 0)) <= 0 ? (r = a,
            i) : 1 <= n ? (r = o,
            e) : (r = a + n * s,
            i + n * u);
            return [r, t]
        },
        isClockwise: function(t) {
            for (var e, r, n = t.length, i = 0, a = t[n - 1], o = a[0], s = a[1], u = 0; u < n; u += 1)
                i += ((e = (r = t[u])[0]) - o) * ((r = r[1]) + s),
                o = e,
                s = r;
            return 0 < i
        },
        ss: function(t, e, r) {
            for (var n = t[0], i = t[1], a = !1, o = e.length, s = 0, u = o - 1; s < o; u = s,
            s += 1) {
                var c = !1
                  , f = e[s][0]
                  , h = e[s][1]
                  , l = e[u][0]
                  , d = e[u][1];
                if (f === n && h === i || l === n && d === i)
                    return !!r;
                if (h < i == i <= d) {
                    if (n === (l = (l - f) * (i - h) / (d - h) + f))
                        return !!r;
                    c = n < l
                }
                c && (a = !a)
            }
            return a
        },
        dr: function(t, e) {
            for (var r, n = function(t, e, r) {
                return (r[0] - e[0]) * (t[1] - e[1]) > (r[1] - e[1]) * (t[0] - e[0])
            }, i = function(t, e, r, n) {
                var i = [t[0] - e[0], t[1] - e[1]]
                  , a = [r[0] - n[0], r[1] - n[1]]
                  , t = t[0] * e[1] - t[1] * e[0]
                  , e = r[0] * n[1] - r[1] * n[0]
                  , r = 1 / (i[0] * a[1] - i[1] * a[0]);
                return [(t * a[0] - e * i[0]) * r, (t * a[1] - e * i[1]) * r]
            }, a = t, o = e[e.length - 2], s = 0, u = e.length - 1; s < u; s++) {
                for (var c = e[s], f = a, a = [], h = f[f.length - 1], l = 0, d = f.length; l < d; l++)
                    n(r = f[l], o, c) ? (n(h, o, c) || a.push(i(o, c, h, r)),
                    a.push(r)) : n(h, o, c) && a.push(i(o, c, h, r)),
                    h = r;
                o = c
            }
            return a.length < 3 ? [] : (a.push(a[0]),
            a)
        }
    }
      , Pixel = function() {
        function r(t, e, r) {
            if (void 0 === r && (r = !1),
            this.className = "AMap.Pixel",
            isNaN(t) || isNaN(e))
                throw new Error("Invalid Object: Pixel(" + t + ", " + e + ")");
            this.x = r ? Math.round(t) : Number(t),
            this.y = r ? Math.round(e) : Number(e)
        }
        return r.prototype.getX = function() {
            return this.x
        }
        ,
        r.prototype.round = function() {
            return new r(Math.round(this.x),Math.round(this.y))
        }
        ,
        r.prototype.getY = function() {
            return this.y
        }
        ,
        r.prototype.toString = function() {
            return this.x + "," + this.y
        }
        ,
        r.prototype.equals = function(t) {
            return t instanceof r && Math.max(Math.abs(this.x - t.x), Math.abs(this.y - t.y)) <= 1e-9
        }
        ,
        r.prototype.toArray = function() {
            return [this.x, this.y]
        }
        ,
        r.prototype.subtract = function(t, e) {
            return new r(this.x - t.x,this.y - t.y,e)
        }
        ,
        r.prototype.multiplyBy = function(t, e) {
            return new r(this.x * t,this.y * t,e)
        }
        ,
        r.prototype.direction = function() {
            var t, e = this.x, r = this.y;
            return 0 === e && 0 === r ? null : 0 === e ? 0 < r ? 90 : 270 : (t = 180 * Math.atan(r / e) / Math.PI,
            e < 0 && 0 < r || e < 0 && r < 0 ? 180 + t : 0 < e && r < 0 ? 360 + t : t)
        }
        ,
        r.prototype.toJSON = function() {
            return [this.x, this.y]
        }
        ,
        r
    }()
      , commonjsGlobal = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};
    function unwrapExports(t) {
        return t && t.gP && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t
    }
    function createCommonjsModule(t, e) {
        return t(e = {
            exports: {}
        }, e.exports),
        e.exports
    }
    var dist = createCommonjsModule(function(u, t) {
        function c(t, e) {
            return e < t ? 1 : t < e ? -1 : 0
        }
        function y(t, e, r) {
            null === e ? (t.PP = !1,
            t.OP = !0) : (t._P === e._P ? (t.PP = !e.PP,
            t.OP = e.OP) : (t.PP = !e.OP,
            t.OP = e.NP() ? !e.PP : e.PP),
            e && (t.CP = !n(e, r) || e.NP() ? e.CP : e)),
            e = n(t, r),
            t.hN = e ? function(t, e) {
                var r, n = !t.PP, i = !t.OP;
                switch (e) {
                case w:
                    r = n && i;
                    break;
                case P:
                    r = n || i;
                    break;
                case $:
                    r = n ^ i;
                    break;
                case C:
                    r = t._P ? n && !i : i && !n
                }
                return r ? 1 : -1
            }(t, r) : 0
        }
        function n(t, e) {
            switch (t.type) {
            case o:
                switch (e) {
                case w:
                    return !t.OP;
                case P:
                    return t.OP;
                case C:
                    return t._P && t.OP || !t._P && !t.OP;
                case $:
                    return !0
                }
                break;
            case S:
                return e === w || e === P;
            case A:
                return e === C;
            case M:
                return !1
            }
            return !1
        }
        function v(t, e) {
            return t[0] === e[0] && t[1] === e[1]
        }
        function I(t, e, r, n, i) {
            var a, o, s, u, c = e[0], f = n[0], h = 0, l = 0, d = (c < f == -c < f ? (a = c,
            c = e[++h]) : (a = f,
            f = n[++l]),
            0);
            if (h < t && l < r)
                for (c < f == -c < f ? (s = a - ((o = c + a) - c),
                c = e[++h]) : (s = a - ((o = f + a) - f),
                f = n[++l]),
                a = o,
                0 !== s && (i[d++] = s); h < t && l < r; )
                    c < f == -c < f ? (s = a - ((o = a + c) - (u = o - a)) + (c - u),
                    c = e[++h]) : (s = a - ((o = a + f) - (u = o - a)) + (f - u),
                    f = n[++l]),
                    a = o,
                    0 !== s && (i[d++] = s);
            for (; h < t; )
                s = a - ((o = a + c) - (u = o - a)) + (c - u),
                c = e[++h],
                a = o,
                0 !== s && (i[d++] = s);
            for (; l < r; )
                s = a - ((o = a + f) - (u = o - a)) + (f - u),
                f = n[++l],
                a = o,
                0 !== s && (i[d++] = s);
            return 0 === a && 0 !== d || (i[d++] = a),
            d
        }
        function e(t) {
            return new (commonjsGlobal.Float64Array ? Float64Array : Array)(t)
        }
        function i(t, e, r) {
            n = t[0],
            t = t[1],
            i = e[0],
            e = e[1];
            var n, i, a, o, s, a = r[0], s = (o = (t - (r = r[1])) * (i - a)) - (u = (n - a) * (e - r)), u = 0 == o || 0 == u || 0 < o != 0 < u || (o = Math.abs(o + u),
            Math.abs(s) >= 33306690738754716e-32 * o) ? s : -function(t, e, r, n, i, a, o) {
                var s, u, c, f, h, l, d, v, g, p, y = t - i, m = r - i, b = e - a, T = n - a, x = y * T, M = N * y, S = M - (M - y), A = y - S, w = (k[0] = (d = A * (c = T - (u = (M = N * T) - (M - T))) - (x - S * u - A * u - S * c)) - ((f = d - (g = (A = b - (S = (M = N * b) - (M - b))) * (c = m - (u = (M = N * m) - (M - m))) - ((v = b * m) - S * u - A * u - S * c))) + (s = d - f)) + (s - g),
                k[1] = (l = x - ((h = x + f) - (s = h - x)) + (f - s)) - ((f = l - v) + (s = l - f)) + (s - v),
                k[2] = h - ((p = h + f) - (s = p - h)) + (f - s),
                k[3] = p,
                function(e) {
                    for (var r = e[0], n = 1; n < 4; n++)
                        r += e[n];
                    return r
                }(k)), P = 22204460492503146e-32 * o;
                return P <= w || P <= -w || (t = t - (y + (s = t - y)) + (s - i),
                r = r - (m + (s = r - m)) + (s - i),
                i = e - (b + (s = e - b)) + (s - a),
                e = n - (T + (s = n - T)) + (s - a),
                0 == t && 0 == i && 0 == r && 0 == e) || (P = 11093356479670487e-47 * o + 33306690738754706e-32 * Math.abs(w)) <= (w += y * e + T * t - (b * r + m * i)) || P <= -w ? w : (U[0] = (d = (A = t - (S = (M = N * t) - (M - t))) * (c = T - (u = (M = N * T) - (M - T))) - ((x = t * T) - S * u - A * u - S * c)) - ((f = d - (g = (A = i - (S = (M = N * i) - (M - i))) * (c = m - (u = (M = N * m) - (M - m))) - ((v = i * m) - S * u - A * u - S * c))) + (s = d - f)) + (s - g),
                U[1] = (l = x - ((h = x + f) - (s = h - x)) + (f - s)) - ((f = l - v) + (s = l - f)) + (s - v),
                U[2] = h - ((p = h + f) - (s = p - h)) + (f - s),
                U[3] = p,
                n = I(4, k, 4, U, L),
                U[0] = (d = (A = y - (S = (M = N * y) - (M - y))) * (c = e - (u = (M = N * e) - (M - e))) - ((x = y * e) - S * u - A * u - S * c)) - ((f = d - (g = (A = b - (S = (M = N * b) - (M - b))) * (c = r - (u = (M = N * r) - (M - r))) - ((v = b * r) - S * u - A * u - S * c))) + (s = d - f)) + (s - g),
                U[1] = (l = x - ((h = x + f) - (s = h - x)) + (f - s)) - ((f = l - v) + (s = l - f)) + (s - v),
                U[2] = h - ((p = h + f) - (s = p - h)) + (f - s),
                U[3] = p,
                a = I(n, L, 4, U, O),
                U[0] = (d = (A = t - (S = (M = N * t) - (M - t))) * (c = e - (u = (M = N * e) - (M - e))) - ((x = t * e) - S * u - A * u - S * c)) - ((f = d - (g = (A = i - (S = (M = N * i) - (M - i))) * (c = r - (u = (M = N * r) - (M - r))) - ((v = i * r) - S * u - A * u - S * c))) + (s = d - f)) + (s - g),
                U[1] = (l = x - ((h = x + f) - (s = h - x)) + (f - s)) - ((f = l - v) + (s = l - f)) + (s - v),
                U[2] = h - ((p = h + f) - (s = p - h)) + (f - s),
                U[3] = p,
                o = I(a, O, 4, U, _),
                _[o - 1])
            }(n, t, i, e, a, r, o);
            return 0 < u ? -1 : u < 0 ? 1 : 0
        }
        function m(t, e) {
            var r = t.point
              , n = e.point;
            return r[0] > n[0] ? 1 : r[0] < n[0] ? -1 : r[1] !== n[1] ? r[1] > n[1] ? 1 : -1 : (n = e,
            e = r,
            (r = t).left === n.left ? 0 === i(e, r.IP.point, n.IP.point) ? !r._P && n._P ? 1 : -1 : r.FP(n.IP.point) ? -1 : 1 : r.left ? 1 : -1)
        }
        function g(t, e, r) {
            var n = new l(e,!1,t,t._P)
              , e = new l(e,!0,t.IP,t._P);
            v(t.point, t.IP.point) && console.warn("what is that, a collapsed segment?", t),
            n.UP = e.UP = t.UP,
            0 < m(e, t.IP) && (t.IP.left = !0,
            e.left = !1),
            t.IP.IP = e,
            t.IP = n,
            r.push(e),
            r.push(n)
        }
        function p(t, e) {
            return t[0] * e[1] - t[1] * e[0]
        }
        function b(t, e) {
            return t[0] * e[0] + t[1] * e[1]
        }
        function T(t, e, r) {
            n = t.point,
            i = t.IP.point,
            h = e.point,
            d = e.IP.point;
            var n, i, o, s, u, f, h, l, d, i = [i[0] - n[0], i[1] - n[1]], d = [d[0] - h[0], d[1] - h[1]], u = [h[0] - n[0], h[1] - n[1]], s = p(i, d), f = b(i, i);
            function c(t, e, r) {
                return [t[0] + e * r[0], t[1] + e * r[1]]
            }
            return 0 === (d = (u = 0 < s * s ? (o = p(u, d) / s) < 0 || 1 < o || (l = p(u, i) / s) < 0 || 1 < l ? null : 0 != o && 1 != o && (0 == l || 1 == l) ? [c(h, l, d)] : [c(n, o, i)] : !(0 < (s = p(u, i)) * s) && (l = (h = b(i, u) / f) + b(i, d) / f,
            o = Math.min(h, l),
            s = Math.max(h, l),
            o <= 1) && 0 <= s ? 1 === o ? [c(n, 0 < o ? o : 0, i)] : 0 === s ? [c(n, s < 1 ? s : 1, i)] : [c(n, 0 < o ? o : 0, i), c(n, s < 1 ? s : 1, i)] : null) ? u.length : 0) || 1 === d && (v(t.point, e.point) || v(t.IP.point, e.IP.point)) || 2 === d && t._P === e._P ? 0 : 1 === d ? (v(t.point, u[0]) || v(t.IP.point, u[0]) || g(t, u[0], r),
            v(e.point, u[0]) || v(e.IP.point, u[0]) || g(e, u[0], r),
            1) : (l = h = !(f = []),
            v(t.point, e.point) ? h = !0 : 1 === m(t, e) ? f.push(e, t) : f.push(t, e),
            v(t.IP.point, e.IP.point) ? l = !0 : 1 === m(t.IP, e.IP) ? f.push(e.IP, t.IP) : f.push(t.IP, e.IP),
            h && l || h ? (e.type = M,
            t.type = e.PP === t.PP ? S : A,
            h && !l && g(f[1].IP, f[0].point, r),
            2) : (l ? g(f[0], f[1].point, r) : f[0] !== f[3].IP ? (g(f[0], f[1].point, r),
            g(f[1], f[2].point, r)) : (g(f[0], f[1].point, r),
            g(f[3].IP, f[2].point, r)),
            3))
        }
        function D(t, e) {
            var r, n;
            return t === e ? 0 : 0 !== i(t.point, t.IP.point, e.point) || 0 !== i(t.point, t.IP.point, e.IP.point) ? v(t.point, e.point) ? t.FP(e.IP.point) ? -1 : 1 : t.point[0] === e.point[0] ? t.point[1] < e.point[1] ? -1 : 1 : 1 === m(t, e) ? e.RP(t.point) ? -1 : 1 : t.FP(e.point) ? -1 : 1 : t._P !== e._P ? t._P ? -1 : 1 : (r = t.point,
            n = e.point,
            r[0] === n[0] && r[1] === n[1] ? (r = t.IP.point,
            n = e.IP.point,
            r[0] === n[0] && r[1] === n[1] ? 0 : t.UP > e.UP ? 1 : -1) : 1 === m(t, e) ? 1 : -1)
        }
        function h(t, e) {
            return t < e ? -1 : e < t ? 1 : 0
        }
        function G(t, e, r, n, i, a) {
            for (var o = 0, s = t.length - 1; o < s; o++) {
                var u = t[o]
                  , c = t[o + 1]
                  , f = new l(u,!1,void 0,e)
                  , h = new l(c,!1,f,e);
                f.IP = h,
                u[0] === c[0] && u[1] === c[1] || (f.UP = h.UP = r,
                a || (f.DP = !1,
                h.DP = !1),
                0 < m(f, h) ? h.left = !0 : f.left = !0,
                c = u[0],
                u = u[1],
                i[0] = j(i[0], c),
                i[1] = j(i[1], u),
                i[2] = d(i[2], c),
                i[3] = d(i[3], u),
                n.push(f),
                n.push(h))
            }
        }
        function r(t, e, r) {
            if ("number" == typeof t[0][0][0] && (t = [t]),
            u = e = "number" == typeof e[0][0][0] ? [e] : e,
            n = null,
            (c = t).length * u.length == 0 && (r === w ? n = R : r === C ? n = c : r !== P && r !== $ || (n = 0 === c.length ? u : c)),
            n)
                return n === R ? null : n;
            var o, s = [1 / 0, 1 / 0, -1 / 0, -1 / 0], u = [1 / 0, 1 / 0, -1 / 0, -1 / 0], c = function(t, e, r, n, i) {
                for (var a, o, s, u, c = new E(null,m), f = 0, h = t.length; f < h; f++)
                    for (s = 0,
                    u = (a = t[f]).length; s < u; s++)
                        (o = 0 === s) && F++,
                        G(a[s], !0, F, c, r, o);
                for (f = 0,
                h = e.length; f < h; f++)
                    for (s = 0,
                    u = (a = e[f]).length; s < u; s++)
                        o = 0 === s,
                        (o = i !== C && o) && F++,
                        G(a[s], !1, F, c, n, o);
                return c
            }(t, e, s, u, r), n = t;
            if (t = e,
            e = r,
            o = null,
            (s[0] > u[2] || s[2] < u[0] || u[3] < s[1] || s[3] < u[1]) && (e === w ? o = R : e === C ? o = n : e !== P && e !== $ || (o = n.concat(t))),
            o)
                return o === R ? null : o;
            for (var f = function(t) {
                for (var f = function(t) {
                    for (var e, r, n = [], i = 0, a = t.length; i < a; i++)
                        ((e = t[i]).left && e.EP || !e.left && e.IP.EP) && n.push(e);
                    for (var o = !1; !o; )
                        for (o = !0,
                        i = 0,
                        a = n.length; i < a; i++)
                            i + 1 < a && 1 === m(n[i], n[i + 1]) && (r = n[i],
                            n[i] = n[i + 1],
                            n[i + 1] = r,
                            o = !1);
                    for (i = 0,
                    a = n.length; i < a; i++)
                        (e = n[i]).lN = i;
                    for (i = 0,
                    a = n.length; i < a; i++)
                        (e = n[i]).left || (r = e.lN,
                        e.lN = e.IP.lN,
                        e.IP.lN = r);
                    return n
                }(t), h = {}, l = [], d = 0, r = f.length; d < r; d++)
                    !function() {
                        if (!h[d]) {
                            var t, e, r, n, i = l.length, a = (c = f[d],
                            t = l,
                            e = i,
                            n = new V,
                            null != c.CP ? (r = (c = c.CP).dN,
                            0 < c.hN ? null != (c = t[r]).gN ? (t[c = c.gN].vN.push(e),
                            n.gN = c,
                            n.depth = t[r].depth) : (t[r].vN.push(e),
                            n.gN = r,
                            n.depth = t[r].depth + 1) : (n.gN = null,
                            n.depth = t[r].depth)) : (n.gN = null,
                            n.depth = 0),
                            n), o = function(t) {
                                h[t] = !0,
                                f[t].dN = i
                            }, s = d, u = d, c = f[d].point;
                            for (a.points.push(c); o(s),
                            o(s = f[s].lN),
                            a.points.push(f[s].point),
                            (s = function(t, e, r, n) {
                                var i, a = t + 1, o = e[t].point, s = e.length;
                                for (a < s && (i = e[a].point); a < s && i[0] === o[0] && i[1] === o[1]; ) {
                                    if (!r[a])
                                        return a;
                                    i = e[++a].point
                                }
                                for (a = t - 1; r[a] && n < a; )
                                    a--;
                                return a
                            }(s, f, h, u)) != u; )
                                ;
                            l.push(a)
                        }
                    }();
                return l
            }(function(t, e, r, n) {
                for (var i = new x(D), a = [], o = Math.min(e[2], r[2]); 0 !== t.length; ) {
                    var s, u, c, f, h, l = t.pop();
                    if (a.push(l),
                    n === w && l.point[0] > o || n === C && l.point[0] > e[2])
                        break;
                    l.left ? (c = u = i.Xc(l),
                    u = u !== (s = i.MP()) ? i.NM(u) : null,
                    c = i.next(c),
                    y(l, f = u ? u.key : null, n),
                    c && 2 === T(l, c.key, t) && (y(l, f, n),
                    y(l, c.key, n)),
                    u && 2 === T(u.key, l, t) && (y(f, (h = (h = u) !== s ? i.NM(h) : null) ? h.key : null, n),
                    y(l, f, n))) : (l = l.IP,
                    c = u = i.find(l),
                    u && c && (u = u !== s ? i.NM(u) : null,
                    c = i.next(c),
                    i.remove(l),
                    c) && u && T(u.key, c.key, t))
                }
                return a
            }(c, s, u, r)), h = [], l = 0; l < f.length; l++) {
                var d = f[l];
                if (d.pN()) {
                    for (var v = [d.points], g = 0; g < d.vN.length; g++) {
                        var p = d.vN[g];
                        v.push(f[p].points)
                    }
                    h.push(v)
                }
            }
            return h
        }
        var x, o, M, S, A, w, P, C, $, l, N, k, L, O, _, U, V, E, d, j, F, R, s = {
            size: {
                configurable: !0
            }
        };
        (x = function(t, e) {
            void 0 === e && (e = !1),
            this.bP = t = void 0 === t ? c : t,
            this.yP = null,
            this._size = 0,
            this.mP = !!e
        }
        ).prototype.TP = function(t) {
            var e = t.right;
            e && (t.right = e.left,
            e.left && (e.left.parent = t),
            e.parent = t.parent),
            t.parent ? t === t.parent.left ? t.parent.left = e : t.parent.right = e : this.yP = e,
            e && (e.left = t),
            t.parent = e
        }
        ,
        x.prototype.wP = function(t) {
            var e = t.left;
            e && (t.left = e.right,
            e.right && (e.right.parent = t),
            e.parent = t.parent),
            t.parent ? t === t.parent.left ? t.parent.left = e : t.parent.right = e : this.yP = e,
            e && (e.right = t),
            t.parent = e
        }
        ,
        x.prototype.AP = function(t) {
            for (; t.parent; ) {
                var e = t.parent;
                e.parent ? e.left === t && e.parent.left === e ? (this.wP(e.parent),
                this.wP(e)) : e.right === t && e.parent.right === e ? (this.TP(e.parent),
                this.TP(e)) : e.left === t && e.parent.right === e ? (this.wP(e),
                this.TP(e)) : (this.TP(e),
                this.wP(e)) : e.left === t ? this.wP(e) : this.TP(e)
            }
        }
        ,
        x.prototype.xP = function(t) {
            for (var e, r, n, i; t.parent; )
                (r = (e = t.parent).parent) && r.parent ? ((n = r.parent).left === r ? n.left = t : n.right = t,
                t.parent = n) : (t.parent = null,
                this.yP = t),
                n = t.left,
                i = t.right,
                t === e.left ? (r && (r.left === e ? (e.right ? (r.left = e.right,
                r.left.parent = r) : r.left = null,
                (e.right = r).parent = e) : (n ? (r.right = n).parent = r : r.right = null,
                (t.left = r).parent = t)),
                i ? (e.left = i).parent = e : e.left = null,
                (t.right = e).parent = t) : (r && (r.right === e ? (e.left ? (r.right = e.left,
                r.right.parent = r) : r.right = null,
                (e.left = r).parent = e) : (i ? (r.left = i).parent = r : r.left = null,
                (t.right = r).parent = t)),
                n ? (e.right = n).parent = e : e.right = null,
                (t.left = e).parent = t)
        }
        ,
        x.prototype.replace = function(t, e) {
            t.parent ? t === t.parent.left ? t.parent.left = e : t.parent.right = e : this.yP = e,
            e && (e.parent = t.parent)
        }
        ,
        x.prototype.MP = function(t) {
            if (t = void 0 === t ? this.yP : t)
                for (; t.left; )
                    t = t.left;
            return t
        }
        ,
        x.prototype.SP = function(t) {
            if (t = void 0 === t ? this.yP : t)
                for (; t.right; )
                    t = t.right;
            return t
        }
        ,
        x.prototype.Xc = function(t, e) {
            var r = this.yP
              , n = null
              , i = this.bP;
            if (this.mP)
                for (; r; ) {
                    if (0 === i((n = r).key, t))
                        return;
                    r = i(r.key, t) < 0 ? r.right : r.left
                }
            else
                for (; r; )
                    r = i((n = r).key, t) < 0 ? r.right : r.left;
            return r = {
                key: t,
                data: e,
                left: null,
                right: null,
                parent: n
            },
            n ? i(n.key, r.key) < 0 ? n.right = r : n.left = r : this.yP = r,
            this.xP(r),
            this._size++,
            r
        }
        ,
        x.prototype.find = function(t) {
            for (var e = this.yP, r = this.bP; e; ) {
                var n = r(e.key, t);
                if (n < 0)
                    e = e.right;
                else {
                    if (!(0 < n))
                        return e;
                    e = e.left
                }
            }
            return null
        }
        ,
        x.prototype.contains = function(t) {
            for (var e = this.yP, r = this.bP; e; ) {
                var n = r(t, e.key);
                if (0 === n)
                    return !0;
                e = n < 0 ? e.left : e.right
            }
            return !1
        }
        ,
        x.prototype.remove = function(t) {
            var e;
            return !!(t = this.find(t)) && (this.xP(t),
            t.left ? t.right ? ((e = this.MP(t.right)).parent !== t && (this.replace(e, e.right),
            e.right = t.right,
            e.right.parent = e),
            this.replace(t, e),
            e.left = t.left,
            e.left.parent = e) : this.replace(t, t.left) : this.replace(t, t.right),
            this._size--,
            !0)
        }
        ,
        x.prototype.removeNode = function(t) {
            var e;
            return !!t && (this.xP(t),
            t.left ? t.right ? ((e = this.MP(t.right)).parent !== t && (this.replace(e, e.right),
            e.right = t.right,
            e.right.parent = e),
            this.replace(t, e),
            e.left = t.left,
            e.left.parent = e) : this.replace(t, t.left) : this.replace(t, t.right),
            this._size--,
            !0)
        }
        ,
        x.prototype.$P = function(t) {
            var e, r;
            (t = this.find(t)) && (this.xP(t),
            e = t.left,
            t = t.right,
            r = null,
            e && (e.parent = null,
            r = this.SP(e),
            this.xP(r),
            this.yP = r),
            t && (e ? r.right = t : this.yP = t,
            t.parent = r),
            this._size--)
        }
        ,
        x.prototype.pop = function() {
            var t = this.yP
              , e = null;
            if (t) {
                for (; t.left; )
                    t = t.left;
                e = {
                    key: t.key,
                    data: t.data
                },
                this.remove(t.key)
            }
            return e
        }
        ,
        x.prototype.next = function(t) {
            var e = t;
            if (e)
                if (e.right)
                    for (e = e.right; e && e.left; )
                        e = e.left;
                else
                    for (e = t.parent; e && e.right === t; )
                        e = (t = e).parent;
            return e
        }
        ,
        x.prototype.NM = function(t) {
            var e = t;
            if (e)
                if (e.left)
                    for (e = e.left; e && e.right; )
                        e = e.right;
                else
                    for (e = t.parent; e && e.left === t; )
                        e = (t = e).parent;
            return e
        }
        ,
        x.prototype.forEach = function(t) {
            for (var e = this.yP, r = [], n = !1, i = 0; !n; )
                e ? (r.push(e),
                e = e.left) : 0 < r.length ? (t(e = r.pop(), i++),
                e = e.right) : n = !0;
            return this
        }
        ,
        x.prototype.range = function(t, e, r, n) {
            for (var i = [], a = this.bP, o = this.yP; 0 !== i.length || o; )
                if (o)
                    i.push(o),
                    o = o.left;
                else {
                    if (0 < a((o = i.pop()).key, e))
                        break;
                    if (0 <= a(o.key, t) && r.call(n, o))
                        return this;
                    o = o.right
                }
            return this
        }
        ,
        x.prototype.keys = function() {
            for (var t = this.yP, e = [], r = [], n = !1; !n; )
                t ? (e.push(t),
                t = t.left) : 0 < e.length ? (t = e.pop(),
                r.push(t.key),
                t = t.right) : n = !0;
            return r
        }
        ,
        x.prototype.values = function() {
            for (var t = this.yP, e = [], r = [], n = !1; !n; )
                t ? (e.push(t),
                t = t.left) : 0 < e.length ? (t = e.pop(),
                r.push(t.data),
                t = t.right) : n = !0;
            return r
        }
        ,
        x.prototype.at = function(t) {
            for (var e = this.yP, r = [], n = !1, i = 0; !n; )
                if (e)
                    r.push(e),
                    e = e.left;
                else if (0 < r.length) {
                    if (e = r.pop(),
                    i === t)
                        return e;
                    i++,
                    e = e.right
                } else
                    n = !0;
            return null
        }
        ,
        x.prototype.load = function(t, e, r) {
            if (void 0 === t && (t = []),
            void 0 === e && (e = []),
            void 0 === r && (r = !1),
            0 !== this._size)
                throw new Error("bulk-load: tree is not empty");
            var n = t.length;
            return r && function t(e, r, n, i, a) {
                if (!(i <= n)) {
                    for (var o = e[n + i >> 1], s = n - 1, u = i + 1; ; ) {
                        for (; a(e[++s], o) < 0; )
                            ;
                        for (; 0 < a(e[--u], o); )
                            ;
                        if (u <= s)
                            break;
                        var c = e[s];
                        e[s] = e[u],
                        e[u] = c,
                        c = r[s],
                        r[s] = r[u],
                        r[u] = c
                    }
                    t(e, r, n, u, a),
                    t(e, r, u + 1, i, a)
                }
            }(t, e, 0, n - 1, this.bP),
            this.yP = function t(e, r, n, i, a) {
                var u, o = a - i;
                return 0 < o ? ((u = {
                    key: u = r[o = i + Math.floor(o / 2)],
                    data: n[o],
                    parent: e
                }).left = t(u, r, n, i, o),
                u.right = t(u, r, n, o + 1, a),
                u) : null
            }(null, t, e, 0, n),
            this._size = n,
            this
        }
        ,
        x.prototype.min = function() {
            var t = this.MP(this.yP);
            return t ? t.key : null
        }
        ,
        x.prototype.max = function() {
            var t = this.SP(this.yP);
            return t ? t.key : null
        }
        ,
        x.prototype.isEmpty = function() {
            return null === this.yP
        }
        ,
        s.size.get = function() {
            return this._size
        }
        ,
        x.LP = function(t, e, r, n, i) {
            return new x(r,i).load(t, e, n)
        }
        ,
        Object.defineProperties(x.prototype, s),
        P = M = 1,
        C = S = 2,
        $ = A = 3,
        s = {
            EP: {
                configurable: !(w = o = 0)
            }
        },
        (l = function(t, e, r, n, i) {
            this.left = e,
            this.point = t,
            this.IP = r,
            this._P = n,
            this.type = i || o,
            this.PP = !1,
            this.OP = !1,
            this.CP = null,
            this.hN = 0,
            this.lN = -1,
            this.dN = -1,
            this.DP = !0
        }
        ).prototype.FP = function(t) {
            var e = this.point
              , r = this.IP.point;
            return this.left ? 0 < (e[0] - t[0]) * (r[1] - t[1]) - (r[0] - t[0]) * (e[1] - t[1]) : 0 < (r[0] - t[0]) * (e[1] - t[1]) - (e[0] - t[0]) * (r[1] - t[1])
        }
        ,
        l.prototype.RP = function(t) {
            return !this.FP(t)
        }
        ,
        l.prototype.NP = function() {
            return this.point[0] === this.IP.point[0]
        }
        ,
        s.EP.get = function() {
            return 0 !== this.hN
        }
        ,
        l.prototype.clone = function() {
            var t = new l(this.point,this.left,this.IP,this._P,this.type);
            return t.UP = this.UP,
            t.hN = this.hN,
            t.CP = this.CP,
            t.DP = this.DP,
            t.PP = this.PP,
            t.OP = this.OP,
            t
        }
        ,
        Object.defineProperties(l.prototype, s),
        N = 134217729,
        k = e(4),
        L = e(8),
        O = e(12),
        _ = e(16),
        U = e(4),
        (V = function() {
            this.points = [],
            this.vN = [],
            this.gN = null,
            this.depth = null
        }
        ).prototype.pN = function() {
            return null == this.gN
        }
        ,
        (s = E = function a(t, e) {
            if (!(this instanceof a))
                return new a(t,e);
            if (this.data = t || [],
            this.length = this.data.length,
            this.compare = e || h,
            0 < this.length)
                for (var r = (this.length >> 1) - 1; 0 <= r; r--)
                    this.zP(r)
        }
        ).prototype = {
            push: function(t) {
                this.data.push(t),
                this.length++,
                this.El(this.length - 1)
            },
            pop: function() {
                var t;
                if (0 !== this.length)
                    return t = this.data[0],
                    this.length--,
                    0 < this.length && (this.data[0] = this.data[this.length],
                    this.zP(0)),
                    this.data.pop(),
                    t
            },
            GP: function() {
                return this.data[0]
            },
            El: function(t) {
                for (var e = this.data, r = this.compare, n = e[t]; 0 < t; ) {
                    var i = t - 1 >> 1
                      , a = e[i];
                    if (0 <= r(n, a))
                        break;
                    e[t] = a,
                    t = i
                }
                e[t] = n
            },
            zP: function(t) {
                for (var e = this.data, r = this.compare, n = this.length >> 1, i = e[t]; t < n; ) {
                    var a = 1 + (t << 1)
                      , o = a + 1
                      , s = e[a];
                    if (o < this.length && r(e[o], s) < 0 && (s = e[a = o]),
                    0 <= r(s, i))
                        break;
                    e[t] = s,
                    t = a
                }
                e[t] = i
            }
        },
        E.default = s,
        d = Math.max,
        j = Math.min,
        F = 0,
        R = [],
        s = {
            VP: P,
            BP: C,
            HP: w,
            WP: $
        },
        t.ZP = function(t, e) {
            return r(t, e, C)
        }
        ,
        t.qP = function(t, e) {
            return r(t, e, w)
        }
        ,
        t.YP = s,
        t.union = function(t, e) {
            return r(t, e, P)
        }
        ,
        t.xor = function(t, e) {
            return r(t, e, $)
        }
        ,
        Object.defineProperty(t, "gP", {
            value: !0
        })
    })
      , martinez = unwrapExports(dist)
      , Const = {
        vr: Math.PI / 180,
        mr: 180 / Math.PI,
        yr: 6378137
    };
    function getSphericalCrs(t, e) {
        var r = function(t) {
            switch (t) {
            case "EPSG3857":
                return ProjectionManager.getProjection("EPSG:3857");
            case "EPSG4326":
                return ProjectionManager.getProjection("EPSG:4326")
            }
            return ProjectionManager.getProjection("EPSG3857")
        }(t);
        return {
            project: function(t) {
                return Util.isArray(t) && (t = new LngLat$2(t[0],t[1])),
                r.project(t.lng, t.lat)
            },
            unproject: function(t) {
                return Util.isArray(t) && (t = new Pixel(t[0],t[1])),
                r.unproject(t.x, t.y)
            },
            normalizePoint: function(t) {
                return Util.parseLngLatData(t)
            },
            distance: function(t, e) {
                if (e = this.normalizePoint(e),
                Util.isArray(e))
                    return this.distanceToLine(t, e);
                t = this.normalizePoint(t);
                var r = Const.vr
                  , n = Math.cos
                  , i = t.lat * r
                  , t = t.lng * r
                  , a = e.lat * r
                  , e = e.lng * r
                  , r = 2 * Const.yr
                  , e = e - t
                  , t = (1 - n(a - i) + (1 - n(e)) * n(i) * n(a)) / 2;
                return r * Math.asin(Math.sqrt(t))
            },
            ringArea: function(t) {
                t = this.normalizeLine(t);
                var e = Const.yr * Const.vr
                  , r = 0
                  , n = t
                  , i = n.length;
                if (i < 3)
                    return 0;
                for (var a = 0; a < i - 1; a += 1) {
                    var o = n[a]
                      , s = n[a + 1]
                      , u = o.lng * e * Math.cos(o.lat * Const.vr)
                      , o = o.lat * e
                      , c = s.lng * e * Math.cos(s.lat * Const.vr);
                    r += u * (s.lat * e) - c * o
                }
                var t = n[a]
                  , f = n[0]
                  , h = t.lng * e * Math.cos(t.lat * Const.vr)
                  , t = t.lat * e
                  , l = f.lng * e * Math.cos(f.lat * Const.vr);
                return r += h * (f.lat * e) - l * t,
                .5 * Math.abs(r)
            },
            sphericalCalotteArea: function(t) {
                var e = Const.yr
                  , t = e - e * Math.cos(t / e);
                return 2 * Math.PI * e * t
            }
        }
    }
    function getPlanarCrs() {
        return {
            normalizePoint: function(t) {
                return t && t.x && t.y ? [t.x, t.y] : t
            },
            distance: function(t, e) {
                var r = t[0] - e[0]
                  , t = t[1] - e[1];
                return Math.sqrt(r * r + t * t)
            },
            project: function(t) {
                return t
            },
            unproject: function(t) {
                return t
            },
            ringArea: function(t) {
                for (var e = [0, 0], r = [0, 0], n = 0, i = t[0], a = t.length, o = 2; o < a; o++) {
                    var s = t[o - 1]
                      , u = t[o];
                    e[0] = i[0] - u[0],
                    e[1] = i[1] - u[1],
                    r[0] = i[0] - s[0],
                    r[1] = i[1] - s[1],
                    n += e[0] * r[1] - e[1] * r[0]
                }
                return n / 2
            }
        }
    }
    function isClockwise(t) {
        for (var e = 0, r = t.length, n = 0; n < r - 1; n++) {
            var i, a = t[n];
            e += ((i = t[n + 1])[0] - a[0]) * (i[1] + a[1])
        }
        return t[r - 1][0] === t[0][0] && t[r - 1][1] === t[0][1] || (a = t[r - 1],
        e += ((i = t[0])[0] - a[0]) * (i[1] + a[1])),
        0 < e
    }
    var GeometryUtilCls = function() {
        function e(t) {
            this.CLASS_NAME = "AMap.GeometryUtil",
            this._opts = assign({
                onSegmentTolerance: 5,
                crs: "EPSG3857",
                maxZoom: zoomRange[1]
            }, t),
            this.setCrs(this._opts.crs)
        }
        return e.prototype.clone = function(t) {
            return new e(assign({}, this._opts, t))
        }
        ,
        e.prototype.isPoint = function(t) {
            return t && (t instanceof LngLat$2 || Util.isArray(t) && !isNaN(t[0]))
        }
        ,
        e.prototype.normalizePoint = function(t) {
            return t
        }
        ,
        e.prototype.normalizeLine = function(t) {
            for (var e = [], r = 0, n = t.length; r < n; r++)
                e.push(this.normalizePoint(t[r]));
            return e
        }
        ,
        e.prototype.normalizeMultiLines = function(t) {
            for (var e = [], r = 0, n = (t = Util.isArray(t) && this.isPoint(t[0]) ? [t] : t).length; r < n; r++)
                e.push(this.normalizeLine(t[r]));
            return e
        }
        ,
        e.prototype.setCrs = function(t) {
            t = t && t.project && t.unproject ? t : "plane" === t ? getPlanarCrs() : getSphericalCrs(t, this._opts.maxZoom),
            assign(this, t)
        }
        ,
        e.prototype.distance = function(t, e) {
            throw new Error("distance Not implemented!")
        }
        ,
        e.prototype.xr = function(t, e) {
            t = this.normalizeLine(t);
            for (var r = [], n = 0, i = (t = this.isPoint(t[0]) ? t : t[0]).length; n < i; n++)
                r.push(this.project(t[n]));
            return !0 === e ? r = this.makesureClockwise(r) : !1 === e && (r = this.makesureClockwise(r)).reverse(),
            r
        }
        ,
        e.prototype.br = function(t) {
            for (var e = [], r = 0, n = t.length; r < n; r++)
                e.push(this.unproject(t[r]));
            return e
        }
        ,
        e.prototype.closestOnSegment = function(t, e, r) {
            return t = Coordinate.closestOnSegment(this.project(t), this.xr([e, r])),
            this.unproject(t)
        }
        ,
        e.prototype.closestOnLine = function(t, e) {
            for (var r, n = 1 / 0, i = 0, a = (e = this.normalizeLine(e)).length; i < a - 1; i++) {
                var o = this.closestOnSegment(t, e[i], e[i + 1])
                  , s = this.distance(t, o);
                s < n && (n = s,
                r = o)
            }
            return r
        }
        ,
        e.prototype.distanceToSegment = function(t, e, r) {
            return this.distanceToLine(t, [e, r])
        }
        ,
        e.prototype.distanceToLine = function(t, e) {
            e = this.normalizeLine(e);
            for (var r = 1 / 0, n = 0, i = (e = this.isPoint(e[0]) ? e : e[0]).length; n < i - 1; n++)
                var a = this.closestOnSegment(t, e[n], e[n + 1])
                  , r = Math.min(r, this.distance(t, a));
            return r
        }
        ,
        e.prototype.distanceToPolygon = function(t, e) {
            return this.isPointInRing(t, e) ? 0 : this.distanceToLine(t, e)
        }
        ,
        e.prototype.isPointOnSegment = function(t, e, r, n) {
            return (!n && 0 !== n || n < 0) && (n = this._opts.onSegmentTolerance),
            this.distanceToSegment(t, e, r) <= n
        }
        ,
        e.prototype.isPointOnLine = function(t, e, r) {
            for (var n = 0, i = (e = this.normalizeLine(e)).length; n < i - 1; n++)
                if (this.isPointOnSegment(t, e[n], e[n + 1], r))
                    return !0;
            return !1
        }
        ,
        e.prototype.isPointOnRing = function(t, e, r) {
            for (var n = 0, i = (e = this.normalizeLine(e)).length; n < i; n++)
                if (this.isPointOnSegment(t, e[n], e[n === i - 1 ? 0 : n + 1], r))
                    return !0;
            return !1
        }
        ,
        e.prototype.isPointOnPolygon = function(t, e, r) {
            for (var n = 0, i = (e = this.normalizeMultiLines(e)).length; n < i; n++)
                if (this.isPointOnRing(t, e[n], r))
                    return !0;
            return !1
        }
        ,
        e.prototype.makesureClockwise = function(t) {
            return isClockwise(t) || (t = [].concat(t)).reverse(),
            t
        }
        ,
        e.prototype.makesureAntiClockwise = function(t) {
            return isClockwise(t) && (t = [].concat(t)).reverse(),
            t
        }
        ,
        e.prototype.pointInRing = function(t, e, r) {
            for (var n = !1, i = 0; i < e.length && !n; i++)
                if (s(t, e[i][0], r)) {
                    for (var a = !1, o = 1; o < e[i].length && !a; )
                        s(t, e[i][o], !r) && (a = !0),
                        o++;
                    a || (n = !0)
                }
            function s(t, e, r) {
                for (var n = !1, i = 0, a = (e = e[0][0] === e[e.length - 1][0] && e[0][1] === e[e.length - 1][1] ? e.slice(0, e.length - 1) : e).length - 1; i < e.length; a = i++) {
                    var o = e[i][0]
                      , s = e[i][1]
                      , u = e[a][0]
                      , c = e[a][1];
                    if (t[1] * (o - u) + s * (u - t[0]) + c * (t[0] - o) == 0 && (o - t[0]) * (u - t[0]) <= 0 && (s - t[1]) * (c - t[1]) <= 0)
                        return !r;
                    s > t[1] != c > t[1] && t[0] < (u - o) * (t[1] - s) / (c - s) + o && (n = !n)
                }
                return n
            }
            return n
        }
        ,
        e.prototype.isPointInBbox = function(t, e) {
            for (var r = 1 / 0, n = 1 / 0, i = -1 / 0, a = -1 / 0, o = 0; o < e.length; o++)
                var s = e[o]
                  , r = Math.min(r, s[0])
                  , i = Math.max(i, s[0])
                  , n = Math.min(n, s[1])
                  , a = Math.max(a, s[1]);
            return t[0] > r && t[0] < i && t[1] > n && t[1] < a
        }
        ,
        e.prototype.isPointInRing = function(t, e) {
            return e = this.normalizeLine(e),
            e = this.xr(e, !0),
            Coordinate.ss(this.project(t), e, !1)
        }
        ,
        e.prototype.isRingInRing = function(t, e) {
            for (var r = 0, n = t.length; r < n; r++)
                if (!this.isPointInRing(t[r], e))
                    return !1;
            return !0
        }
        ,
        e.prototype.isRingInRingByOutsea = function(t, e) {
            for (var r = 0, n = t.length; r < n; r++)
                if (this.isPointInRing(t[r], e))
                    return !0;
            for (r = 0,
            n = e.length; r < n; r++)
                if (this.isPointInRing(e[r], t))
                    return !0;
            return !1
        }
        ,
        e.prototype.isRingInRingByMapbox = function(t, e) {
            for (var r = 0, n = t.length; r < n; r++)
                if (!this.isPointInRing(t[r], e))
                    return !1;
            return !0
        }
        ,
        e.prototype.isRingInRingByMapboxB = function(t, e) {
            for (var r = 0, n = t.length; r < n; r++)
                if (this.isPointInRing(t[r], e))
                    return !0;
            return !1
        }
        ,
        e.prototype.isPixelRingInRing = function(t, e) {
            for (var r = 0, n = t.length; r < n; r++)
                if (Coordinate.ss(t[r], e, !1))
                    return !0;
            return !1
        }
        ,
        e.prototype.isPointInPolygon = function(t, e) {
            for (var r, n = 0, i = (e = this.normalizeMultiLines(e)).length; n < i && (r = this.isPointInRing(t, e[n]),
            r = 0 < n ? !r : r); n += 1)
                ;
            return Boolean(r)
        }
        ,
        e.prototype.isPointInPolygons = function(t, e) {
            for (var r = 0; r < e.length; r++) {
                for (var n = e[r], i = void 0, a = 0, o = (n = this.normalizeMultiLines(n)).length; a < o && (i = this.isPointInRing(t, n[a]),
                i = 0 < a ? !i : i); a += 1)
                    ;
                if (i)
                    return !0
            }
            return !1
        }
        ,
        e.prototype.doesSegmentsIntersect = function(t, e, r, n) {
            t = (i = this.xr([t, e, r, n]))[0],
            e = i[1],
            r = i[2];
            var i = ((n = i[3])[0] - r[0]) * (t[1] - r[1]) - (n[1] - r[1]) * (t[0] - r[0])
              , o = (e[0] - t[0]) * (t[1] - r[1]) - (e[1] - t[1]) * (t[0] - r[0]);
            return 0 != (n = (n[1] - r[1]) * (e[0] - t[0]) - (n[0] - r[0]) * (e[1] - t[1])) && (r = o / n,
            0 <= (e = i / n)) && e <= 1 && 0 <= r && r <= 1
        }
        ,
        e.prototype.doesSegmentLineIntersect = function(t, e, r) {
            for (var n = 0, i = (r = this.normalizeLine(r)).length; n < i - 1; n++)
                if (this.doesSegmentsIntersect(t, e, r[n], r[n + 1]))
                    return !0;
            return !1
        }
        ,
        e.prototype.doesSegmentRingIntersect = function(t, e, r) {
            for (var n = 0, i = (r = this.normalizeLine(r)).length; n < i; n++)
                if (this.doesSegmentsIntersect(t, e, r[n], r[n === i - 1 ? 0 : n + 1]))
                    return !0;
            return !1
        }
        ,
        e.prototype.doesSegmentPolygonIntersect = function(t, e, r) {
            for (var n = 0, i = (r = this.normalizeMultiLines(r)).length; n < i; n++)
                if (this.doesSegmentRingIntersect(t, e, r[n]))
                    return !0;
            return !1
        }
        ,
        e.prototype.doesLineLineIntersect = function(t, e) {
            for (var r = 0, n = (t = this.normalizeLine(t)).length; r < n - 1; r++)
                if (this.doesSegmentLineIntersect(t[r], t[r + 1], e))
                    return !0;
            return !1
        }
        ,
        e.prototype.doesLineRingIntersect = function(t, e) {
            for (var r = 0, n = (t = this.normalizeLine(t)).length; r < n - 1; r++)
                if (this.doesSegmentRingIntersect(t[r], t[r + 1], e))
                    return !0;
            return !1
        }
        ,
        e.prototype.doesPolygonPolygonIntersect = function(t, e) {
            return !!(this.doesRingRingIntersect(e, t) || this.isRingInRing(t, e) || this.isRingInRing(e, t))
        }
        ,
        e.prototype.doesRingRingIntersect = function(t, e) {
            for (var r = 0, n = (t = this.normalizeLine(t)).length; r < n; r++)
                if (this.doesSegmentRingIntersect(t[r], t[r === n - 1 ? 0 : r + 1], e))
                    return !0;
            return !1
        }
        ,
        e.prototype.along = function(t, e) {
            for (var r = 0, n = 0; n < t.length - 1; n += 1) {
                var i, a = this.distance(t[n], t[n + 1]);
                if (!(a + r < e))
                    return [t[n][0] + (i = (e - r) / a) * (t[n + 1][0] - t[n][0]), t[n][1] + i * (t[n + 1][1] - t[n][1]), n];
                r += a
            }
            return null
        }
        ,
        e.prototype.gr = function(t, e) {
            for (var a, r = function(t) {
                return (c[0] - o[0]) * (t[1] - o[1]) > (c[1] - o[1]) * (t[0] - o[0])
            }, n = function() {
                var t = [o[0] - c[0], o[1] - c[1]]
                  , e = [h[0] - a[0], h[1] - a[1]]
                  , r = o[0] * c[1] - o[1] * c[0]
                  , n = h[0] * a[1] - h[1] * a[0]
                  , i = 1 / (t[0] * e[1] - t[1] * e[0]);
                return [(r * e[0] - n * t[0]) * i, (r * e[1] - n * t[1]) * i]
            }, i = t = this.makesureAntiClockwise(t), o = (e = this.makesureClockwise(e))[e.length - 1], s = 0, u = e.length; s < u; s++) {
                for (var c = e[s], f = i, i = [], h = f[f.length - 1], l = 0, d = f.length; l < d; l++)
                    r(a = f[l]) ? (r(h) || i.push(n()),
                    i.push(a)) : r(h) && i.push(n()),
                    h = a;
                o = c
            }
            return i
        }
        ,
        e.prototype.ringRingClip = function(t, e) {
            return t = this.xr(t),
            e = this.xr(e),
            isEqual(t[0], t[t.length - 1]) || t.push(t[0].slice()),
            isEqual(e[0], e[e.length - 1]) || e.push(e[0].slice()),
            (t = martinez.qP([t], [e])) && t[0] && t[0][0] ? this.br(t[0][0]) : []
        }
        ,
        e.prototype.ringArea = function(t) {
            throw new Error("distance Not implemented!")
        }
        ,
        e.prototype.distanceOfLine = function(t) {
            for (var e = 0, r = 0, n = (t = this.normalizeLine(t)).length; r < n - 1; r++)
                e += this.distance(t[r], t[r + 1]);
            return e
        }
        ,
        e.prototype.isClockwise = function(t) {
            return isClockwise(t = this.xr(t))
        }
        ,
        e.prototype.typePolygon = function(t) {
            return isArray(t) && isArray(t[0]) ? 2 === t[0][0].length || t[0][0]instanceof LngLat$2 ? "Polygon" : 2 < t[0][0].length && (2 === t[0][0][0].length || t[0][0][0]instanceof LngLat$2) ? "MultiPolygon" : "never" : "never"
        }
        ,
        e
    }()
      , GeometryUtilInstance = new GeometryUtilCls({})
      , PlaneGeometryUtilInstance = new GeometryUtilCls({})
      , GeometryUtil = (PlaneGeometryUtilInstance.setCrs("plane"),
    {
        distance: GeometryUtilInstance.distance.bind(GeometryUtilInstance),
        ringArea: GeometryUtilInstance.ringArea.bind(GeometryUtilInstance),
        isClockwise: GeometryUtilInstance.isClockwise.bind(GeometryUtilInstance),
        typePolygon: GeometryUtilInstance.typePolygon.bind(GeometryUtilInstance),
        makesureClockwise: GeometryUtilInstance.makesureClockwise.bind(GeometryUtilInstance),
        makesureAntiClockwise: GeometryUtilInstance.makesureAntiClockwise.bind(GeometryUtilInstance),
        distanceOfLine: GeometryUtilInstance.distanceOfLine.bind(GeometryUtilInstance),
        ringRingClip: GeometryUtilInstance.ringRingClip.bind(GeometryUtilInstance),
        doesSegmentsIntersect: GeometryUtilInstance.doesSegmentsIntersect.bind(GeometryUtilInstance),
        doesSegmentLineIntersect: GeometryUtilInstance.doesSegmentLineIntersect.bind(GeometryUtilInstance),
        doesSegmentRingIntersect: GeometryUtilInstance.doesSegmentRingIntersect.bind(GeometryUtilInstance),
        doesSegmentPolygonIntersect: GeometryUtilInstance.doesSegmentPolygonIntersect.bind(GeometryUtilInstance),
        doesLineLineIntersect: GeometryUtilInstance.doesLineLineIntersect.bind(GeometryUtilInstance),
        doesLineRingIntersect: GeometryUtilInstance.doesLineRingIntersect.bind(GeometryUtilInstance),
        doesRingRingIntersect: GeometryUtilInstance.doesRingRingIntersect.bind(GeometryUtilInstance),
        pointInRing: GeometryUtilInstance.pointInRing.bind(GeometryUtilInstance),
        isPointInRing: GeometryUtilInstance.isPointInRing.bind(GeometryUtilInstance),
        isPointInBbox: GeometryUtilInstance.isPointInBbox.bind(GeometryUtilInstance),
        isRingInRing: GeometryUtilInstance.isRingInRing.bind(GeometryUtilInstance),
        isPointInPolygon: GeometryUtilInstance.isPointInPolygon.bind(GeometryUtilInstance),
        isPointInPolygons: GeometryUtilInstance.isPointInPolygons.bind(GeometryUtilInstance),
        isPointOnSegment: GeometryUtilInstance.isPointOnSegment.bind(GeometryUtilInstance),
        isPointOnLine: GeometryUtilInstance.isPointOnLine.bind(GeometryUtilInstance),
        isPointOnRing: GeometryUtilInstance.isPointOnRing.bind(GeometryUtilInstance),
        isPointOnPolygon: GeometryUtilInstance.isPointOnPolygon.bind(GeometryUtilInstance),
        closestOnSegment: GeometryUtilInstance.closestOnSegment.bind(GeometryUtilInstance),
        closestOnLine: GeometryUtilInstance.closestOnLine.bind(GeometryUtilInstance),
        distanceToSegment: GeometryUtilInstance.distanceToSegment.bind(GeometryUtilInstance),
        distanceToLine: GeometryUtilInstance.distanceToLine.bind(GeometryUtilInstance)
    })
      , PlaneGeometryUtil = {
        distance: PlaneGeometryUtilInstance.distance.bind(PlaneGeometryUtilInstance),
        ringArea: PlaneGeometryUtilInstance.ringArea.bind(PlaneGeometryUtilInstance),
        isClockwise: PlaneGeometryUtilInstance.isClockwise.bind(PlaneGeometryUtilInstance),
        typePolygon: PlaneGeometryUtilInstance.typePolygon.bind(PlaneGeometryUtilInstance),
        makesureClockwise: PlaneGeometryUtilInstance.makesureClockwise.bind(PlaneGeometryUtilInstance),
        makesureAntiClockwise: PlaneGeometryUtilInstance.makesureAntiClockwise.bind(PlaneGeometryUtilInstance),
        distanceOfLine: PlaneGeometryUtilInstance.distanceOfLine.bind(PlaneGeometryUtilInstance),
        ringRingClip: PlaneGeometryUtilInstance.ringRingClip.bind(PlaneGeometryUtilInstance),
        doesSegmentsIntersect: PlaneGeometryUtilInstance.doesSegmentsIntersect.bind(PlaneGeometryUtilInstance),
        doesSegmentLineIntersect: PlaneGeometryUtilInstance.doesSegmentLineIntersect.bind(PlaneGeometryUtilInstance),
        doesSegmentRingIntersect: PlaneGeometryUtilInstance.doesSegmentRingIntersect.bind(PlaneGeometryUtilInstance),
        doesSegmentPolygonIntersect: PlaneGeometryUtilInstance.doesSegmentPolygonIntersect.bind(PlaneGeometryUtilInstance),
        doesLineLineIntersect: PlaneGeometryUtilInstance.doesLineLineIntersect.bind(PlaneGeometryUtilInstance),
        doesLineRingIntersect: PlaneGeometryUtilInstance.doesLineRingIntersect.bind(PlaneGeometryUtilInstance),
        doesRingRingIntersect: PlaneGeometryUtilInstance.doesRingRingIntersect.bind(PlaneGeometryUtilInstance),
        pointInRing: PlaneGeometryUtilInstance.pointInRing.bind(PlaneGeometryUtilInstance),
        isPointInRing: PlaneGeometryUtilInstance.isPointInRing.bind(PlaneGeometryUtilInstance),
        isPointInBbox: PlaneGeometryUtilInstance.isPointInBbox.bind(PlaneGeometryUtilInstance),
        isRingInRing: PlaneGeometryUtilInstance.isRingInRing.bind(PlaneGeometryUtilInstance),
        isPointInPolygon: PlaneGeometryUtilInstance.isPointInPolygon.bind(PlaneGeometryUtilInstance),
        isPointInPolygons: PlaneGeometryUtilInstance.isPointInPolygons.bind(PlaneGeometryUtilInstance),
        isPointOnSegment: PlaneGeometryUtilInstance.isPointOnSegment.bind(PlaneGeometryUtilInstance),
        isPointOnLine: PlaneGeometryUtilInstance.isPointOnLine.bind(PlaneGeometryUtilInstance),
        isPointOnRing: PlaneGeometryUtilInstance.isPointOnRing.bind(PlaneGeometryUtilInstance),
        isPointOnPolygon: PlaneGeometryUtilInstance.isPointOnPolygon.bind(PlaneGeometryUtilInstance),
        closestOnSegment: PlaneGeometryUtilInstance.closestOnSegment.bind(PlaneGeometryUtilInstance),
        closestOnLine: PlaneGeometryUtilInstance.closestOnLine.bind(PlaneGeometryUtilInstance),
        distanceToSegment: PlaneGeometryUtilInstance.distanceToSegment.bind(PlaneGeometryUtilInstance),
        distanceToLine: PlaneGeometryUtilInstance.distanceToLine.bind(PlaneGeometryUtilInstance)
    }
      , LngLat$2 = function() {
        function r(t, e, r) {
            if (void 0 === r && (r = !1),
            this.className = "AMap.LngLat",
            isNumberArray(t) ? (t = parseFloat(t[0]),
            e = parseFloat(t[1])) : (e = parseFloat(e),
            t = parseFloat(t)),
            isNaN(t) || isNaN(e))
                throw Error("Invalid Object: LngLat(" + t + ", " + e + ")");
            !0 !== r && (e = Math.max(Math.min(e, 90), -90),
            t = (t + 180) % 360 + (t < -180 || 180 === t ? 180 : -180)),
            this.kT = e,
            this.KL = t,
            this.lng = Math.round(1e6 * t) / 1e6,
            this.lat = Math.round(1e6 * e) / 1e6,
            this.pos = ProjectionManager.getProjection("EPSG:3857").project(t, e)
        }
        return r.from = function(t) {
            return isLngLat(t) ? new r(t.KL,t.kT) : new r(t[0],t[1])
        }
        ,
        r.prototype.setLng = function(t) {
            return this.KL = t,
            this.lng = Math.round(1e6 * t) / 1e6,
            this
        }
        ,
        r.prototype.setLat = function(t) {
            return this.kT = t,
            this.lat = Math.round(1e6 * t) / 1e6,
            this
        }
        ,
        r.prototype.getLng = function() {
            return this.lng
        }
        ,
        r.prototype.getLat = function() {
            return this.lat
        }
        ,
        r.prototype.equals = function(t) {
            return (t = parseLngLatData(t))instanceof r && Math.max(Math.abs(this.kT - t.kT), Math.abs(this.KL - t.KL)) <= 1e-9
        }
        ,
        r.prototype.add = function(t, e) {
            return new r(this.KL + t.KL,this.kT + t.kT,e)
        }
        ,
        r.prototype.subtract = function(t, e) {
            return new r(this.KL - t.KL,this.kT - t.kT,e)
        }
        ,
        r.prototype.divideBy = function(t, e) {
            return new r(this.KL / t,this.kT / t,e)
        }
        ,
        r.prototype.multiplyBy = function(t, e) {
            return new r(this.KL * t,this.kT * t,e)
        }
        ,
        r.prototype.offset = function(t, e) {
            if (isNaN(t) || isNaN(e))
                throw Error("valid offset args, require number");
            return t = 2 * Math.asin(Math.sin(Math.round(t) / 12756274) / Math.cos(this.kT * Math.PI / 180)),
            t = this.KL + 180 * t / Math.PI,
            e = 2 * Math.asin(Math.round(e) / 12756274),
            new r(t,this.kT + 180 * e / Math.PI)
        }
        ,
        r.prototype.toString = function() {
            return this.lng + "," + this.lat
        }
        ,
        r.prototype.toArray = function() {
            return [this.lng, this.lat]
        }
        ,
        r.prototype.toJSON = function() {
            return [this.lng, this.lat]
        }
        ,
        r.prototype.distanceTo = function(t) {
            return GeometryUtil.distance(this, t)
        }
        ,
        r.prototype.distance = function(t) {
            return GeometryUtil.distance(this, t)
        }
        ,
        r
    }()
      , Size = function() {
        function t(t, e, r) {
            if (void 0 === r && (r = !1),
            this.className = "AMap.Size",
            isNaN(t) || isNaN(e))
                throw new Error("Invalid Object: Pixel(" + t + ", " + e + ")");
            this.width = r ? Math.round(t) : Number(t),
            this.height = r ? Math.round(e) : Number(e)
        }
        return t.prototype.getWidth = function() {
            return this.width
        }
        ,
        t.prototype.getHeight = function() {
            return this.height
        }
        ,
        t.prototype.toString = function() {
            return this.width + "," + this.height
        }
        ,
        t.prototype.toArray = function() {
            return [this.width, this.height]
        }
        ,
        t
    }()
      , easing = function() {
        var o = {}
          , s = "function" == typeof Float32Array;
        function n(t, e) {
            return 1 - 3 * e + 3 * t
        }
        function w(t, e, r) {
            return ((n(e, r) * t + (3 * r - 6 * e)) * t + 3 * e) * t
        }
        function P(t, e, r) {
            return 3 * n(e, r) * t * t + 2 * (3 * r - 6 * e) * t + 3 * e
        }
        function u(t) {
            return t
        }
        return function(b, e, T, r) {
            if (!(0 <= b && b <= 1 && 0 <= T && T <= 1))
                throw new Error("bezier x values must be in [0, 1] range");
            var t = arguments.toString();
            if (o[t])
                return o[t];
            if (b === e && T === r)
                return u;
            for (var x = new (s ? Float32Array : Array)(11), n = 0; n < 11; ++n)
                x[n] = w(.1 * n, b, T);
            return o[t] = function(t) {
                return 0 === t ? 0 : 1 === t ? 1 : w(function(t) {
                    for (var e = 0, r = 1; 10 !== r && x[r] <= t; ++r)
                        e += .1;
                    var n = e + (t - x[--r]) / (x[r + 1] - x[r]) * .1
                      , i = P(n, b, T);
                    if (.001 <= i) {
                        for (var a = t, o = n, s = b, u = T, c = 0; c < 4; ++c) {
                            var f = P(o, s, u);
                            if (0 === f)
                                return o;
                            o -= (w(o, s, u) - a) / f
                        }
                        return o
                    }
                    if (0 === i)
                        return n;
                    for (var h, l, d = t, v = e, g = e + .1, p = b, y = T, m = 0; 0 < (h = w(l = v + (g - v) / 2, p, y) - d) ? g = l : v = l,
                    1e-7 < Math.abs(h) && ++m < 10; )
                        ;
                    return l
                }(t), e, r)
            }
        }
    }();
    function getQuadBezierValue(t, e, r, n) {
        var i;
        return 1 <= t ? n : (i = 1 - t) * i * e + 2 * i * t * r + t * t * n
    }
    function cubic(t, e, r, n, i) {
        var a, o, s, u;
        return 1 <= t ? i : (a = 3 * (r.pos[0] - e.pos[0]),
        o = 3 * (n.pos[0] - r.pos[0]) - a,
        u = i.pos[0] - e.pos[0] - a - o,
        s = 3 * (r.pos[1] - e.pos[1]),
        n = 3 * (n.pos[1] - r.pos[1]) - s,
        r = i.pos[1] - e.pos[1] - s - n,
        i = u * Math.pow(t, 3) + o * Math.pow(t, 2) + a * t + e.pos[0],
        u = r * Math.pow(t, 3) + n * Math.pow(t, 2) + s * t + e.pos[1],
        ProjectionManager.getProjection("EPSG:3857").unproject(i, u))
    }
    function quad(t, e, r, n) {
        return ProjectionManager.getProjection("EPSG:3857").unproject(getQuadBezierValue(t, e.pos[0], r.pos[0], n.pos[0]), getQuadBezierValue(t, e.pos[1], r.pos[1], n.pos[1]))
    }
    function p20CoordsToLngLat(t, e) {
        return Array.isArray(e) && (e = new Pixel(e[0],e[1])),
        t.containerTolnglat(e, 20)
    }
    function getSplitNum(t, e) {
        for (var n = [3, 300], r = Math.max(2, 4), i = 0, a = 0, o = 0, s = t.length; o < s - 1; o++) {
            var u = t[o]
              , c = t[o + 1];
            i += Math.abs(c.pos[0] - u.pos[0]),
            a += Math.abs(c.pos[1] - u.pos[1])
        }
        return Math.min(n[1], Math.max(n[0], Math.round(Math.max(i, a) / e / r)))
    }
    function interpolateCoords(t, e) {
        var r = null;
        switch (e.length) {
        case 3:
            r = quad;
            break;
        case 4:
            r = cubic;
            break;
        default:
            return null
        }
        for (var n = [], i = [0].concat(e), a = 1; a < t - 2; a++)
            i[0] = a / t,
            n.push(r.apply(null, i));
        return n.push(e[e.length - 1]),
        n
    }
    function getCoordsWithControlPoints(t, e, r, n) {
        var i = null;
        return t && r && r.length && ((t = [t]).push.apply(t, r),
        t.push(e),
        i = interpolateCoords(getSplitNum(t, n), t)),
        i || [e]
    }
    var BezierUtil = {
        ag: quad,
        ug: cubic,
        sg: easing,
        xb: function(t, e) {
            for (var r = [], n = 0, i = t.length; n < i; n += 1)
                r.push.apply(r, getCoordsWithControlPoints(t[n - 1], t[n], t[n].controlPoints, e));
            return r
        },
        fg: function(t, e, r, n) {
            for (var i = this.xb(t, e, r, n), a = [], o = 0, s = i.length; o < s; o++)
                a.push(p20CoordsToLngLat(e, i[o]));
            return a
        }
    }
      , globalInstance = self
      , TagMap = (function(t) {
        t.LITE = "lite",
        t.LEFT = "left",
        t.ALL = "all",
        t.NONE = ""
    }(exports.zB || (exports.zB = {})),
    {
        2: "all",
        3: "all",
        4: "all",
        5: "all",
        6: "lite",
        7: "all",
        8: "lite",
        9: "all",
        10: "lite",
        11: "lite",
        12: "all",
        13: "all",
        14: "all",
        15: "lite",
        16: "lite",
        17: "all",
        18: "all",
        19: "all",
        20: "all"
    })
      , colorNameDist = {
        aliceblue: "#f0f8ff",
        antiquewhite: "#faebd7",
        aqua: "#00ffff",
        aquamarine: "#7fffd4",
        azure: "#f0ffff",
        beige: "#f5f5dc",
        bisque: "#ffe4c4",
        black: "#000000",
        blanchedalmond: "#ffebcd",
        blue: "#0000ff",
        blueviolet: "#8a2be2",
        brown: "#a52a2a",
        burlywood: "#deb887",
        cadetblue: "#5f9ea0",
        chartreuse: "#7fff00",
        chocolate: "#d2691e",
        coral: "#ff7f50",
        cornflowerblue: "#6495ed",
        cornsilk: "#fff8dc",
        crimson: "#dc143c",
        cyan: "#00ffff",
        darkblue: "#00008b",
        darkcyan: "#008b8b",
        darkgoldenrod: "#b8860b",
        darkgray: "#a9a9a9",
        darkgreen: "#006400",
        darkkhaki: "#bdb76b",
        darkmagenta: "#8b008b",
        darkolivegreen: "#556b2f",
        darkorange: "#ff8c00",
        darkorchid: "#9932cc",
        darkred: "#8b0000",
        darksalmon: "#e9967a",
        darkseagreen: "#8fbc8f",
        darkslateblue: "#483d8b",
        darkslategray: "#2f4f4f",
        darkturquoise: "#00ced1",
        darkviolet: "#9400d3",
        deeppink: "#ff1493",
        deepskyblue: "#00bfff",
        dimgray: "#696969",
        dodgerblue: "#1e90ff",
        firebrick: "#b22222",
        floralwhite: "#fffaf0",
        forestgreen: "#228b22",
        fuchsia: "#ff00ff",
        gainsboro: "#dcdcdc",
        ghostwhite: "#f8f8ff",
        gold: "#ffd700",
        goldenrod: "#daa520",
        grey: "#808080",
        gray: "#808080",
        green: "#008000",
        greenyellow: "#adff2f",
        honeydew: "#f0fff0",
        hotpink: "#ff69b4",
        indianred: "#cd5c5c",
        indigo: "#4b0082",
        ivory: "#fffff0",
        khaki: "#f0e68c",
        lavender: "#e6e6fa",
        lavenderblush: "#fff0f5",
        lawngreen: "#7cfc00",
        lemonchiffon: "#fffacd",
        lightblue: "#add8e6",
        lightcoral: "#f08080",
        lightcyan: "#e0ffff",
        lightgoldenrodyellow: "#fafad2",
        lightgrey: "#d3d3d3",
        lightgreen: "#90ee90",
        lightpink: "#ffb6c1",
        lightsalmon: "#ffa07a",
        lightseagreen: "#20b2aa",
        lightskyblue: "#87cefa",
        lightslategray: "#778899",
        lightsteelblue: "#b0c4de",
        lightyellow: "#ffffe0",
        lime: "#00ff00",
        limegreen: "#32cd32",
        linen: "#faf0e6",
        magenta: "#ff00ff",
        maroon: "#800000",
        mediumaquamarine: "#66cdaa",
        mediumblue: "#0000cd",
        mediumorchid: "#ba55d3",
        mediumpurple: "#9370d8",
        mediumseagreen: "#3cb371",
        mediumslateblue: "#7b68ee",
        mediumspringgreen: "#00fa9a",
        mediumturquoise: "#48d1cc",
        mediumvioletred: "#c71585",
        midnightblue: "#191970",
        mintcream: "#f5fffa",
        mistyrose: "#ffe4e1",
        moccasin: "#ffe4b5",
        navajowhite: "#ffdead",
        navy: "#000080",
        oldlace: "#fdf5e6",
        olive: "#808000",
        olivedrab: "#6b8e23",
        orange: "#ffa500",
        orangered: "#ff4500",
        orchid: "#da70d6",
        palegoldenrod: "#eee8aa",
        palegreen: "#98fb98",
        paleturquoise: "#afeeee",
        palevioletred: "#d87093",
        papayawhip: "#ffefd5",
        peachpuff: "#ffdab9",
        peru: "#cd853f",
        pink: "#ffc0cb",
        plum: "#dda0dd",
        powderblue: "#b0e0e6",
        purple: "#800080",
        rebeccapurple: "#663399",
        red: "#ff0000",
        rosybrown: "#bc8f8f",
        royalblue: "#4169e1",
        saddlebrown: "#8b4513",
        salmon: "#fa8072",
        sandybrown: "#f4a460",
        seagreen: "#2e8b57",
        seashell: "#fff5ee",
        sienna: "#a0522d",
        silver: "#c0c0c0",
        skyblue: "#87ceeb",
        slateblue: "#6a5acd",
        slategray: "#708090",
        snow: "#fffafa",
        springgreen: "#00ff7f",
        steelblue: "#4682b4",
        tan: "#d2b48c",
        teal: "#008080",
        thistle: "#d8bfd8",
        tomato: "#ff6347",
        turquoise: "#40e0d0",
        violet: "#ee82ee",
        wheat: "#f5deb3",
        white: "#ffffff",
        whitesmoke: "#f5f5f5",
        yellow: "#ffff00",
        yellowgreen: "#9acd32"
    }
      , Util = function() {
        var n, o, e, r, i, a, s, u, c, f, t = {
            CLASS_NAME: "AMap.Util",
            WorldAxesCenter: {
                x: 0,
                y: 0
            },
            Single: {},
            stamp: (e = !0 === Browser.DW,
            r = 1e5,
            i = "_amap_id",
            function(t) {
                return t[i] = e ? ++r : --r,
                t[i]
            }
            ),
            singlton: function(t) {
                return v.Single[t] || new t
            },
            getOptimalZoom: function(t) {
                return t < Math.floor(t) + .8 ? Math.floor(t) : Math.ceil(t)
            },
            join: function(t, e) {
                if (t.join)
                    return t.join(e);
                var r, n = [];
                for (r in t)
                    t.hasOwnProperty(r) && n.push(r + "=" + (t[r] || ""));
                return n.join(e)
            },
            getGuid: function(t, e) {
                return void 0 === e && (e = 10),
                (t || "") + Math.round(Math.random() * Math.pow(10, e)) + "_" + (new Date).getTime()
            },
            uuid: (o = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),
            function(t, e) {
                var r, a, n = o, i = [];
                if (e = (e = void 0 === e ? 62 : e) || n.length,
                t = void 0 === t ? 0 : t)
                    for (r = 0; r < t; r++)
                        i[r] = n[0 | Math.random() * e];
                else
                    for (i[8] = i[13] = i[18] = i[23] = "-",
                    i[14] = "4",
                    r = 0; r < 36; r++)
                        i[r] || (a = 0 | 16 * Math.random(),
                        i[r] = n[19 === r ? 3 & a | 8 : a]);
                return i.join("")
            }
            ),
            endsWith: function(t, e) {
                return t.endsWith ? t.endsWith(e) : !(t.length < e.length) && t.substr(t.length - e.length) === e
            },
            mg: [],
            gg: 268435456,
            wg: [215440491, 106744817],
            Mg: {
                start: function(e) {
                    e.startTime = new Date,
                    e.jg = [];
                    var n = (new Date).getTime();
                    e.id = v.requestAnimFrame(function r() {
                        var t = (new Date).getTime();
                        e.jg.push(t - n),
                        n = t,
                        e.id = v.requestAnimFrame(r)
                    })
                },
                cancel: function(t) {
                    t.id && v.cancelAnimFrame(t.id)
                },
                stop: function(t) {
                    t.Ag = Date.now() - t.startTime,
                    this.cancel(t),
                    t.Mg = Math.round(1e3 / (t.Ag / (t.jg.length + 1)))
                }
            },
            kg: function(t, e, r, n, i) {
                if (void 0 === i && (i = !1),
                t === e)
                    return e;
                switch (n = void 0 === n ? "linear" : n) {
                case "ease":
                    r = BezierUtil.sg(.25, .1, .25, 1)(r);
                    break;
                case "ease-in":
                    r = BezierUtil.sg(.42, 0, 1, 1)(r);
                    break;
                case "ease-out":
                    r = BezierUtil.sg(0, 0, .58, 1)(r);
                    break;
                case "ease-in-out":
                    r = BezierUtil.sg(.42, 0, .58, 1)(r)
                }
                return n = t + (e - t) * r,
                i && (n >>= 0),
                n
            },
            createObjectURL: function(t, e) {
                void 0 === e && (e = "text/javascript; charset=utf-8");
                var r = null;
                try {
                    r = (globalInstance.URL || globalInstance.webkitURL).createObjectURL(new Blob([t],{
                        type: e
                    }))
                } catch (t) {
                    r = null
                }
                return r
            },
            revokeObjectURL: function(t) {
                try {
                    (globalInstance.URL || globalInstance.webkitURL).revokeObjectURL(t)
                } catch (t) {}
            },
            Og: function(t) {
                for (var e = {}, r = 0, n = t.length; r < n; r++)
                    e[t[r]] = r;
                return e
            },
            EV: function(t, e) {
                var r = 180 / (e = Math.pow(2, e));
                return [Math.floor(t[0] / (360 / e)) + e / 2, e / 2 - Math.ceil(t[1] / r)]
            },
            WY: function(t, e, r) {
                void 0 === r && (r = !1);
                var n = [t[0], t[3]]
                  , t = [t[2], t[1]]
                  , n = this.EV(n, e)
                  , t = this.EV(t, e)
                  , i = n[0]
                  , a = n[1]
                  , o = t[0]
                  , s = t[1];
                if (r)
                    return {
                        ja: i,
                        Fa: a,
                        Oa: o,
                        Ea: s,
                        z: e
                    };
                this.Pa = {
                    ja: i,
                    Fa: a,
                    Oa: o,
                    Ea: s,
                    z: e
                };
                for (var u = [], c = i; c <= o; c += 1)
                    for (var f = a; f <= s; f += 1)
                        u.push([e, c, f]);
                return u
            },
            xg: function(t) {
                var e = {};
                if (v.is(t, "object"))
                    for (var r in t)
                        t.hasOwnProperty(r) && (e[t[r]] = r);
                return e
            },
            Ig: function(t, e) {
                if (e.length < 5e4)
                    t.push.apply(t, e);
                else
                    for (var r = 0, n = e.length; r < n; r += 1)
                        t.push(e[r])
            },
            clone: function(t) {
                if ("object" != typeof t || null === t)
                    return t;
                if (t.Tg || this.is(t, "Float32Array") || this.is(t, "Uint16Array"))
                    return t;
                var e, r = this.isArray(t) ? [] : {};
                for (e in t)
                    t.hasOwnProperty(e) && (r[e] = v.clone(t[e]));
                return r
            },
            isInteger: function(t) {
                return (0 | t) === t
            },
            vB: function(t) {
                return !isNaN(t)
            },
            setPrototypeOf: "function" == typeof Object.setPrototypeOf ? Object.setPrototypeOf : function(t, e) {
                for (var r in e)
                    t[r] = e[r]
            }
            ,
            isFunction: function(t) {
                return "function" == typeof t
            },
            _g: function(t, e) {
                if (void 0 === e && (e = "webgl"),
                !t)
                    return t;
                for (var r = [], n = 0, i = t.length; n < i; n += 2) {
                    var a = parseInt(t.substr(n, 2), 16);
                    ("webgl" === e || "rgba" === e && 0 === n) && (a = this.format(a / 255, 3)),
                    r.push(a)
                }
                return r.push(r.shift()),
                r
            },
            Sg: function() {},
            keys: "function" == typeof Object.keys ? Object.keys : function(t) {
                var e, r = [];
                for (e in t)
                    t.hasOwnProperty(e) && r.push(e);
                return r
            }
            ,
            map: function(r, n, i) {
                void 0 === i && (i = null);
                var a = [];
                return r && r.length ? (v.Cg(r, function() {
                    for (var t = [], e = 0; e < arguments.length; e++)
                        t[e] = arguments[e];
                    a[t[1]] = n.apply(i || r, t)
                }),
                a) : r
            },
            forEach: function(t, e) {
                if (t && t.length) {
                    var r = t.length;
                    if (0 < r && (e(t[0], 0),
                    1 < r)) {
                        e(t[1], 1);
                        for (var n = 2; n < r; n++)
                            e(t[n], n)
                    }
                }
            },
            Cg: function(t, e, r) {
                if (void 0 === r && (r = null),
                t && t.length)
                    for (var n = 0, i = t.length; n < i && !1 !== e.call(r, t[n], n, t); n++)
                        ;
            },
            find: function(t, e, r) {
                void 0 === r && (r = null);
                for (var n = 0, i = t.length; n < i; n++)
                    if ("function" == typeof e) {
                        if (e.call(r, t[n], n, t))
                            return t[n]
                    } else if (t[n] === e)
                        return t[n];
                return null
            },
            isDOM: function(t) {
                return "object" == typeof HTMLElement ? t instanceof HTMLElement : t && "object" == typeof t && 1 === t.nodeType && "string" == typeof t.nodeName
            },
            Eg: function(t, e) {
                for (var r, n, i = "ASDFGHJKLQWERTYUIO!sdfghjkleiu3~yr5-P&mq9`%zCN*b=8@^xpVM", a = "v5" < (e = e || "v5") ? (r = i.length,
                512) : (i = i.substr(0, r = 27),
                333), o = [], s = NaN, u = 0, c = t.length; u < c; u++)
                    n = t[u],
                    n = i.indexOf(n),
                    s = isNaN(s) ? n * r : (o.push(s + n - a),
                    NaN);
                return o
            },
            Ng: function(t, e) {
                for (var r = 512 < e.length ? Math.round(Math.pow(e.length, .5)) : e.length, n = Math.ceil(e.length / r), i = 0; i < n; i += 1) {
                    var a = r * i
                      , o = a + r;
                    o > e.length && (o = e.length);
                    for (var s = a; s < o; s += 1)
                        t(e[s])
                }
            },
            Lg: function(t) {
                var e;
                return /^rgba\(/.test(t) ? this.Dg(t) : ("#" === (e = t = this.colorNameToHex(t))[0] && (3 === (t = t.substring(1)).length && (t = t.replace(/./g, function(t) {
                    return t + t
                })),
                e = this.argbHex2Rgba(8 === t.length ? t : "ff" + t)),
                this.Dg(e))
            },
            colorNameToHex: function(t) {
                return "string" == typeof (t = (t = void 0 === t ? "" : t).toLowerCase()) && colorNameDist[t] || t
            },
            Rg: function(t, e, r) {
                var n = Math.floor(r / 2)
                  , i = r - n;
                return [r, t & (n = (1 << n) - 1 << i) | e & (i = (1 << i) - 1), e & n | t & i]
            },
            Pg: function(t) {
                return t ? encodeURIComponent(t) : ""
            },
            getStyle: function(t, e, r, n) {
                var i = t[e].i[r];
                if (void 0 === i)
                    return null;
                if (r = t[e].s,
                "number" == typeof i)
                    return r[i];
                for (; void 0 === i[n.toString()] && !(--n < 3); )
                    ;
                return "number" == typeof (t = i[n.toString()]) ? r[t] : null
            },
            Dg: function(t) {
                return (t = t.split(","))[0] = parseFloat(t[0].split("rgba(")[1]) / 255,
                t[1] = parseFloat(t[1]) / 255,
                t[2] = parseFloat(t[2]) / 255,
                t[3] = parseFloat(t[3]),
                t
            },
            Ug: function(t) {
                return (t = t.split(","))[0] = parseFloat(t[0].split("rgb(")[1]) / 255,
                t[1] = parseFloat(t[1]) / 255,
                t[2] = parseFloat(t[2]) / 255,
                t
            },
            Bg: function(t) {
                return "rgba(" + 255 * t[0] + "," + 255 * t[1] + "," + 255 * t[2] + "," + t[3] + ")"
            },
            color2Rgba: function(t) {
                return this.Bg(this.color2RgbaArray(t))
            },
            color2RgbaArray: function(t) {
                var e, r, n, i, a, o, s;
                return t instanceof Array ? (3 == t.length && t.push(1),
                t) : 0 == (e = this.colorNameToHex(t)).indexOf("rgb(") ? ((r = this.Ug(e)).push(1),
                r) : 0 == e.indexOf("rgba(") ? this.Dg(e) : 0 == e.indexOf("#") ? 4 === e.length ? (s = e.substr(1).replace(/./g, function(t) {
                    return t + t
                }),
                this.zg(s)) : 7 == e.length ? this.zg(e.substr(1)) : 9 == e.length ? (r = e.substr(1),
                this.qg(r)) : void 0 : 0 === e.indexOf("hsla") ? (n = t.substr(5).split(","),
                i = parseInt(n[0], 10) / 360,
                a = parseInt(n[1], 10) / 100,
                o = parseInt(n[2], 10) / 100,
                r = parseFloat(n[3]),
                this.GQ(i, a, o, r)) : 0 === e.indexOf("hsl") ? (n = t.substr(4).split(","),
                i = parseInt(n[0], 10) / 360,
                a = parseInt(n[1], 10) / 100,
                o = parseInt(n[2], 10) / 100,
                this.GQ(i, a, o, 1)) : 3 === e.length ? (s = e.replace(/./g, function(t) {
                    return t + t
                }),
                this.zg(s)) : 6 == e.length ? this.zg(e) : 8 == e.length ? this.qg(e) : void 0
            },
            GQ: function(t, e, r, n) {
                var i, a, o;
                return 0 === e ? i = a = o = r : (i = this.uQ(e = 2 * r - (r = r < .5 ? r * (1 + e) : r + e - r * e), r, t + 1 / 3),
                a = this.uQ(e, r, t),
                o = this.uQ(e, r, t - 1 / 3)),
                [i, a, o, n]
            },
            uQ: function(t, e, r) {
                return r < 0 && (r += 1),
                1 < r && --r,
                r < 1 / 6 ? t + 6 * (e - t) * r : r < .5 ? e : r < 2 / 3 ? t + (e - t) * (2 / 3 - r) * 6 : t
            },
            rgbHex2Rgba: function(t) {
                return t.startsWith("#") && (t = t.slice(1)),
                v.argbHex2Rgba("ff" + t)
            },
            argbHex2Rgba: function(t) {
                for (var e = [], r = 0, n = (t = t.startsWith("#") ? t.slice(1) : t).length; r < n; r += 2)
                    e.push(parseInt(t.substr(r, 2), 16));
                return e.push((e.shift() / 255).toFixed(2)),
                "rgba(" + e.join(",") + ")"
            },
            Opacity2Rgba: function(t, e) {
                var r = e;
                return e && e[3] && t && (e[3] = Math.floor(255 * t)),
                r
            },
            Hex2Rgba: function(t) {
                if ("string" != typeof t)
                    return !1;
                for (var e = [], r = 0, n = t.length; r < n; r += 2)
                    e.push(parseInt(t.substr(r, 2), 16));
                return e.push(parseInt(e.shift())),
                e
            },
            zg: function(t) {
                return this.uE(t + "ff")
            },
            qg: function(t) {
                for (var e = [], r = 0, n = t.length; r < n; r += 2)
                    e.push(parseInt(t.substr(r, 2), 16) / 255);
                return e.push(e.shift()),
                e
            },
            uE: function(t) {
                return [((t = parseInt(t, 16)) >> 24 & 255) / 255, (t >> 16 & 255) / 255, (t >> 8 & 255) / 255, (255 & t) / 255]
            },
            isEmpty: function(t) {
                for (var e in t)
                    if (t.hasOwnProperty(e))
                        return !1;
                return !0
            },
            Wg: function(t, e) {
                return 0 <= e && t.splice(e, 1),
                t
            },
            startsWith: function(t, e) {
                return t.startsWith ? t.startsWith(e) : t.substr(0, e.length) === e
            },
            deleteItemFromArray: function(t, e) {
                return e = v.indexOf(t, e),
                v.Wg(t, e)
            },
            deleteItemFromArrayByIndex: function(t, e) {
                return v.Wg(t, e)
            },
            filter: function(t, r, n) {
                var i = [];
                return v.Cg(t, function(t, e) {
                    r.call(n, t, e) && i.push(t)
                }),
                i
            },
            indexOf: function(t, e) {
                if (t && t.length) {
                    if (t.indexOf)
                        return t.indexOf(e);
                    for (var r = 0; r < t.length; r += 1)
                        if (t[r] === e)
                            return r
                }
                return -1
            },
            Gg: function(t, e) {
                return t.endsWith ? t.endsWith(e) : !(t.length < e.length) && t.substr(t.length - e.length) == e
            },
            bind: (n = !1,
            Boolean(Function.prototype.bind) && (n = !0),
            function(t, e) {
                var r = 2 < arguments.length ? Array.prototype.slice.call(arguments, 2) : null;
                return n ? r ? (r.unshift(e),
                t.bind.apply(t, r)) : t.bind(e) : function() {
                    return t.apply(e, r || arguments)
                }
            }
            ),
            setOptions: function(t, e) {
                return t.opts = assign({}, t.opts, e = e || {}),
                t.opts
            },
            yn: function(t, e, r) {
                return "function" == typeof e ? this.Hg(t, !0, this.Vg(e, r, 1)) : this.Hg(t, !0)
            },
            Hg: function(r, n, i, t, e, a, o) {
                var s;
                if (void 0 === (s = i ? e ? i(r, t, e) : i(r) : s)) {
                    if (!this.$g(r))
                        return r;
                    if (t = this.isArray(r)) {
                        if (s = this.Yg(r),
                        !n)
                            return this.Kg(r, s)
                    } else {
                        var u = Object.prototype.toString.call(r)
                          , c = "[object Function]" == u;
                        if ("[object Object]" != u && "[object Arguments]" != u && (!c || e))
                            return e ? r : {};
                        if (s = this.Xg(c ? {} : r),
                        !n)
                            return this.baseAssign(s, r)
                    }
                    o = o || [];
                    for (var f = (a = a || []).length; f--; )
                        if (a[f] == r)
                            return o[f];
                    a.push(r),
                    o.push(s),
                    (t ? this.Zg : this.Qg)(r, function(t, e) {
                        s[e] = v.Hg(t, n, i, e, r, a, o)
                    })
                }
                return s
            },
            baseAssign: function(t, e) {
                return null == e ? t : this.tM(e, Object.keys(e), t)
            },
            $g: function(t) {
                var e = typeof t;
                return !!t && ("object" == e || "function" == e)
            },
            rM: function(t) {
                return !!t && "object" == typeof t
            },
            nM: function(t) {
                return "number" == typeof t && -1 < t && t % 1 == 0 && t <= 9007199254740991
            },
            Yg: function(t) {
                var e = t.length
                  , r = new Array(e);
                return e && "string" == typeof t[0] && Object.hasOwnProperty.call(t, "index") && (r.index = t.index,
                r.input = t.input),
                r
            },
            Kg: function(t, e) {
                var r = -1
                  , n = t.length;
                for (e = e || Array(n); ++r < n; )
                    e[r] = t[r];
                return e
            },
            Xg: function(t) {
                return new (t = "function" == typeof (t = t.constructor) && t instanceof t ? t : Object)
            },
            Vg: function(a, o, t) {
                if ("function" != typeof a)
                    return this.identity;
                if (void 0 === o)
                    return a;
                switch (t) {
                case 1:
                    return function(t) {
                        return a.call(o, t)
                    }
                    ;
                case 3:
                    return function(t, e, r) {
                        return a.call(o, t, e, r)
                    }
                    ;
                case 4:
                    return function(t, e, r, n) {
                        return a.call(o, t, e, r, n)
                    }
                    ;
                case 5:
                    return function(t, e, r, n, i) {
                        return a.call(o, t, e, r, n, i)
                    }
                }
                return function() {
                    return a.apply(o, arguments)
                }
            },
            Zg: function(t, e) {
                for (var r = -1, n = t.length; ++r < n && !1 !== e(t[r], r, t); )
                    ;
                return t
            },
            identity: function(t) {
                return t
            },
            iM: function(u) {
                return function(t, e, r) {
                    for (var n = v.eM(t), i = r(t), a = i.length, o = u ? a : -1; u ? o-- : ++o < a; ) {
                        var s = i[o];
                        if (!1 === e(n[s], s, n))
                            break
                    }
                    return t
                }
            },
            Qg: function(t, e) {
                return v.iM()(t, e, Object.keys)
            },
            eM: function(t) {
                return v.$g(t) ? t : Object(t)
            },
            tM: function(t, e, r) {
                r = r || {};
                for (var n = -1, i = e.length; ++n < i; ) {
                    var a = e[n];
                    r[a] = t[a]
                }
                return r
            },
            oM: function() {
                return !1
            },
            aM: "",
            uM: Date.now ? function() {
                return Date.now()
            }
            : function() {
                return (new Date).getTime()
            }
            ,
            sM: function(t, e, r, n) {
                var i, a, o, s, u, c, f;
                return s = n ? (i = 0,
                o = this.uM,
                function() {
                    if ((a = o()) - i < e)
                        return !1;
                    i = a,
                    t.apply(r, arguments)
                }
                ) : (f = function() {
                    u = !1,
                    c && (s.apply(r, c),
                    c = !1)
                }
                ,
                function() {
                    u ? c = arguments : (u = !0,
                    t.apply(r, arguments),
                    setTimeout(f, e))
                }
                )
            },
            format: function(t, e) {
                return t === t << 0 ? t : +parseFloat(t + "").toFixed(e || 0)
            },
            isArray: Array.isArray || function(t) {
                return this.is(t, "array")
            }
            ,
            is: function(t, e) {
                return Object.prototype.toString.call(t).split(" ")[1].slice(0, -1).toLowerCase() === e.toLowerCase()
            },
            includes: "function" == typeof Array.prototype.includes ? function(t, e) {
                return t.includes(e)
            }
            : function(t, e) {
                return -1 !== this.indexOf(t, e)
            }
            ,
            fM: function(t) {
                var e = 0;
                if (0 !== t.length)
                    for (var r = 0, n = t.length; r < n; r += 1)
                        e = (e << 5) - e + t.charCodeAt(r),
                        e &= e;
                return e
            },
            hM: function(t, e) {
                e = e ? Math.ceil(parseInt(e.substr(6)) / 24) : 1;
                for (var r = "", n = 0, i = t.length; n < i; n++)
                    r += String.fromCharCode((t.charCodeAt(n) - 256 - e + 65535) % 65535);
                return r
            },
            cM: function(t, e) {
                var r = (t + "").slice(-2)
                  , n = (e + "").slice(-2)
                  , i = (t = t.slice(0, -2),
                e = e.slice(0, -2),
                parseInt((n + r).slice(1)))
                  , a = Math.ceil(i / 250) % 2 ? 1 : -1
                  , i = 1 < i / 500 ? 1 : -1;
                return t -= parseInt("1" + r) / 3e3 * a,
                e -= parseInt("1" + n) / 3e3 * i,
                new LngLat$2(parseFloat(t).toFixed(5),parseFloat(e).toFixed(5))
            },
            vM: function(t) {
                return "undefined" != typeof JSON && JSON.stringify ? v.fM(JSON.stringify(t)) : null
            },
            lM: function(t, e) {
                var r = "_amap_hash";
                return !e && t.hasOwnProperty(r) || (e = v.vM(t)) && (t[r] = e),
                t[r]
            },
            parseLngLatData: function(t) {
                if (v.isArray(t)) {
                    var e;
                    if (!v.isArray(t[0]))
                        return "string" == (e = typeof t[0]) || "number" == e ? new LngLat$2(t[0],t[1]) : t;
                    for (var r = 0; r < t.length; r += 1)
                        t[r] = v.parseLngLatData(t[r])
                }
                return t
            },
            dM: function(t) {
                for (var e = [], r = 0, n = t.length; r < n; r += 1)
                    e[r] = [t[r].x, t[r].y];
                return e
            },
            bM: function(t) {
                return v.isArray(t) ? new Size(t[0],t[1]) : t
            },
            hp: function(t, e) {
                var r, n = [0, 0], i = v.getOptimalZoom(e.viewState.zoom);
                return t && LocalZoom <= i ? (i = lcs.getSize(),
                e = e.viewState.centerCoord,
                e = lcs.getLocalByCoord([e[0], e[1]]),
                r = t.x - e.x,
                e = t.y - e.y,
                0 != r && (r *= i[0],
                n[0] = r),
                0 != e && (e *= i[1],
                n[1] = e)) : t && (n[0] += t.center[0],
                n[1] += t.center[1]),
                n
            },
            dS: function(t, e) {
                return t >= e[0] && t <= e[1]
            },
            kD: function(t, e, r) {
                return void 0 === r && (r = !1),
                t = (t = void 0 === t ? "" : t).split(",")[0] || "",
                !r && t && e && TagMap[e] || "all"
            },
            VF: function(t, e, r) {
                return !(r = void 0 !== r && r) && t && e && TagMap[e] || "all"
            },
            LD: function(t, e) {
                return !(!t || !e) && (t = this.iN(t),
                this.iN(e) <= t)
            },
            SD: function(t) {
                var e;
                switch (t = void 0 === t ? "all" : t) {
                case "lite":
                    e = 0;
                    break;
                case "left":
                    e = 1;
                    break;
                default:
                    e = 2
                }
                return e
            },
            pW: function(t) {
                var e;
                switch (t = void 0 === t ? 2 : t) {
                case 0:
                    e = exports.zB.LITE;
                    break;
                case 1:
                    e = exports.zB.LEFT;
                    break;
                default:
                    e = exports.zB.ALL
                }
                return e
            },
            iN: function(t) {
                var e = 0;
                switch (t) {
                case "lite":
                    e = 0;
                    break;
                case "left":
                    e = 1;
                    break;
                case "all":
                    e = 2
                }
                return e
            }
        };
        function h(t) {
            var e = +new Date
              , r = Math.max(0, (Browser.android ? 50 : 20) - (e - a));
            return a = e + r,
            globalInstance.setTimeout(t, 50)
        }
        function l(t) {
            globalInstance.clearTimeout(t)
        }
        function d(t) {
            for (var e, r = ["webkit", "moz", "o", "ms"], n = 0; n < r.length && !e; n += 1)
                e = globalInstance[r[n] + t];
            return e
        }
        a = 0,
        Browser.DW ? (s = h,
        u = l,
        t.requestAnimFrame = function(t, e, r, n) {
            if (!r)
                return s(function() {
                    e ? v.bind(t, e).call(e, n) : t()
                });
            e ? v.bind(t, e).call(e, n) : t()
        }
        ,
        t.cancelAnimFrame = function(t) {
            t && u.call(globalInstance, t)
        }
        ) : (c = globalInstance.requestAnimationFrame || d("RequestAnimationFrame") || h,
        f = globalInstance.cancelAnimationFrame || d("CancelAnimationFrame") || d("CancelRequestAnimationFrame") || l,
        t.requestAnimFrame = function(t, e, r, n) {
            if (!r)
                return c(function() {
                    e ? v.bind(t, e).call(e, n) : t()
                });
            e ? v.bind(t, e).call(e, n) : t()
        }
        ,
        t.cancelAnimFrame = function(t) {
            t && f.call(globalInstance, t)
        }
        ),
        Browser.DW || (t.requestIdleCallback = globalInstance.requestIdleCallback ? function(t, e) {
            return globalInstance.requestIdleCallback(t, e)
        }
        : function(t, e) {
            void 0 === e && (e = {});
            var r = v.uM();
            return setTimeout(function() {
                t({
                    didTimeout: !1,
                    timeRemaining: function() {
                        return Math.max(0, 70 - (v.uM() - r))
                    }
                })
            }, e.timeout || 0)
        }
        ,
        t.cancelIdleCallback = globalInstance.cancelIdleCallback ? function(t) {
            return globalInstance.cancelIdleCallback(t)
        }
        : function(t) {
            clearTimeout(t)
        }
        );
        var v = t;
        return v
    }()
      , extendStatics = function(t, e) {
        return (extendStatics = Object.setPrototypeOf || ({
            __proto__: []
        }instanceof Array ? function(t, e) {
            t.__proto__ = e
        }
        : function(t, e) {
            for (var r in e)
                e.hasOwnProperty(r) && (t[r] = e[r])
        }
        ))(t, e)
    };
    function __extends(t, e) {
        function r() {
            this.constructor = t
        }
        extendStatics(t, e),
        t.prototype = null === e ? Object.create(e) : (r.prototype = e.prototype,
        new r)
    }
    function __decorate(t, e, r, n) {
        var i, a = arguments.length, o = a < 3 ? e : null === n ? n = Object.getOwnPropertyDescriptor(e, r) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.yV)
            o = Reflect.yV(t, e, r, n);
        else
            for (var s = t.length - 1; 0 <= s; s--)
                (i = t[s]) && (o = (a < 3 ? i(o) : 3 < a ? i(e, r, o) : i(e, r)) || o);
        return 3 < a && o && Object.defineProperty(e, r, o),
        o
    }
    function __spreadArrays() {
        for (var t = 0, e = 0, r = arguments.length; e < r; e++)
            t += arguments[e].length;
        for (var n = Array(t), i = 0, e = 0; e < r; e++)
            for (var a = arguments[e], o = 0, s = a.length; o < s; o++,
            i++)
                n[i] = a[o];
        return n
    }
    exports.Ln = function() {
        return exports.Ln = Object.assign || function(t) {
            for (var e, r = 1, n = arguments.length; r < n; r++)
                for (var i in e = arguments[r])
                    Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
            return t
        }
        ,
        exports.Ln.apply(this, arguments)
    }
    ;
    var LabelFormat = function() {
        function t() {
            this.Fs = {},
            this.Es = {},
            this.Ts = []
        }
        return t.prototype.Ns = function(t, e) {
            e.lang && (this.lang = e.lang)
        }
        ,
        t.prototype.rV = function(t, e) {
            return t
        }
        ,
        t.prototype.Ws = function(t, e) {
            for (var r = this.Es, t = labelsUtil.EQ(t = void 0 === t ? "" : t, e = void 0 === e ? [] : e), n = labelsUtil.aQ(t), i = 0; i < n.length; i++)
                r[n[i]] = 1
        }
        ,
        t.id = "labelFormat",
        t
    }();
    function noop$1() {}
    var URLObject = "undefined" != typeof window ? window.URL || window.webkitURL || {
        createObjectURL: function() {
            console.error("URL not exist, please use more popular browser")
        }
    } : URL || webkitURL || {
        createObjectURL: function() {
            console.error("URL not exist, please use more popular browser")
        }
    }
      , MockMap = function() {
        function t() {
            this.gV = {}
        }
        return t.prototype.has = function(t) {
            return Boolean(this.gV[t])
        }
        ,
        t.prototype.set = function(t, e) {
            return this.gV[t] = e
        }
        ,
        t.prototype.get = function(t) {
            return this.gV[t]
        }
        ,
        t.prototype.pV = function(t) {
            delete this.gV[t]
        }
        ,
        t.prototype.clear = function() {
            this.gV = {}
        }
        ,
        t.prototype.forEach = function(t) {
            for (var e in this.gV)
                this.gV.hasOwnProperty(e) && t(this.gV[e])
        }
        ,
        t
    }()
      , AdaptorMap = globalInstance.Map || MockMap
      , SmartTypedArray = function() {
        function t(t, e) {
            void 0 === e && (e = 1024),
            this.type = t,
            this.length = 0,
            this.uf = 0,
            this.value = this.cf(e)
        }
        return t.prototype.set = function(t) {
            this.check(t) && (t.length < this.uf ? this.value.set(t) : (this.cf(t.length),
            this.value.set(t),
            this.length = t.length))
        }
        ,
        t.prototype.check = function(t) {
            if (Array.isArray(t))
                return !0;
            var e = !1;
            switch (this.type) {
            case "uint8":
                e = t instanceof Uint8Array;
                break;
            case "int8":
                e = t instanceof Int8Array;
                break;
            case "uint16":
                e = t instanceof Uint16Array;
                break;
            case "int16":
                e = t instanceof Int16Array;
                break;
            case "uint32":
                e = t instanceof Uint32Array;
                break;
            case "int32":
                e = t instanceof Int32Array;
                break;
            case "float32":
                e = t instanceof Float32Array;
                break;
            case "float64":
                e = t instanceof Float64Array;
                break;
            default:
                e = !1
            }
            return e
        }
        ,
        t.prototype.subarray = function(t, e) {
            return this.value.subarray(t, e)
        }
        ,
        t.prototype.ff = function(t) {
            this.uf < t && this.cf(t),
            this.length = t
        }
        ,
        t.prototype.cf = function(t) {
            var e = this.pf()
              , r = this.value;
            return this.value = new e(t),
            r && this.value.set(r),
            this.uf = t,
            this.value
        }
        ,
        t.prototype.pf = function() {
            var t = Float32Array;
            switch (this.type) {
            case "uint8":
                t = Uint8Array;
                break;
            case "int8":
                t = Int8Array;
                break;
            case "uint16":
                t = Uint16Array;
                break;
            case "int16":
                t = Int16Array;
                break;
            case "uint32":
                t = Uint32Array;
                break;
            case "int32":
                t = Int32Array;
                break;
            case "float32":
                t = Float32Array;
                break;
            case "float64":
                t = Float64Array;
                break;
            default:
                t = Float32Array
            }
            return t
        }
        ,
        __decorate([InnerClass("SmartTypedArray")], t)
    }()
      , INF = (function(t) {
        t[t.fontWidth = 0] = "fontWidth",
        t[t.fontHeight = 1] = "fontHeight",
        t[t.horiBearingX = 2] = "horiBearingX",
        t[t.horiBearingY = 3] = "horiBearingY",
        t[t.horiAdvance = 4] = "horiAdvance",
        t[t.posX = 5] = "posX",
        t[t.posY = 6] = "posY",
        t[t.iconWidth = 7] = "iconWidth",
        t[t.iconHeight = 8] = "iconHeight"
    }(exports.dY || (exports.dY = {})),
    1e20)
      , ControlChars = [[0, 31], [127, 159]]
      , ZeroWidthChars = [[8203, 8207]]
      , f = new SmartTypedArray("float64",4096)
      , d = new SmartTypedArray("float64",4096)
      , z = new SmartTypedArray("float64",4096)
      , v = new SmartTypedArray("float64",4096)
      , ua = navigator.userAgent
      , TinySDF = function() {
        function t(t, e, r, n, i, a, o) {
            this.fontSize = t || 24,
            this.buffer = void 0 === r ? 3 : r,
            this.MU = i || .25,
            this.fontFamily = a || "sans-serif",
            this.fontWeight = o || "lighter",
            this.radius = n || 8,
            this.size = e,
            this.xU(),
            t = e[0] * e[1],
            this.TU = new SmartTypedArray("float64",t),
            this.AU = new SmartTypedArray("float64",t),
            r = 0 <= ua.indexOf("Gecko/") || 0 <= ua.indexOf("Windows"),
            this.wU = Math.round(e[1] / 2 * (r ? 1.2 : 1))
        }
        return t.prototype.bU = function(t) {
            this.size = t || [],
            this.xU(),
            this.mU()
        }
        ,
        t.prototype.Ce = function(t) {
            var e = this.size
              , r = e[0]
              , n = r * (e = e[1]);
            if (i = this.Nz) {
                i.clearRect(0, 0, r, e),
                i.fillText(t, this.buffer, this.wU);
                var a = i.getImageData(0, 0, r, e)
                  , o = new Uint8ClampedArray(n)
                  , s = ((i = new Array(9).fill(0))[0] = 1,
                i[1] = 1,
                t.charCodeAt(0));
                if (this.RU(s))
                    return {
                        bitmap: o,
                        info: i
                    };
                for (var u = INF, c = INF, f = 0, h = 0, l = 0; l < n; l++) {
                    var d, v = l - (d = Math.floor(l / r)) * r, g = a.data[4 * l + 3] / 255;
                    0 < g && (d < u && (u = d),
                    v < c && (c = v),
                    f < d && (f = d),
                    h < v) && (h = v),
                    this.TU.value[l] = 1 == g ? 0 : 0 == g ? INF : Math.pow(Math.max(0, .5 - g), 2),
                    this.AU.value[l] = 1 == g ? INF : 0 == g ? 0 : Math.pow(Math.max(0, g - .5), 2)
                }
                var i = this.buffer
                  , t = this.getWidth(t, h - c)
                  , s = 32 === s ? [6, 6, 0, -21, 9, 0, 0, r, e] : [t, f - u, c, -u + i, t, c - 3, u - 3, r, e];
                for (edt(this.TU.value, r, e),
                edt(this.AU.value, r, e),
                l = 0; l < n; l++) {
                    var y = this.TU.value[l] - this.AU.value[l]
                      , y = Math.max(0, Math.min(255, Math.round(255 - 255 * (y / this.radius + this.MU))));
                    o[l] = y
                }
                return {
                    bitmap: o,
                    info: s
                }
            }
            return {}
        }
        ,
        t.prototype.getWidth = function(t, e) {
            var r;
            switch (t) {
            case "y":
            case "A":
            case "T":
            case "V":
            case "W":
            case "Y":
                r = e;
                break;
            default:
                r = e + 2
            }
            return r
        }
        ,
        t.prototype.measureText = function(t) {
            return this.Nz.measureText(t)
        }
        ,
        t.prototype.xU = function() {
            var t = this.size;
            this.canvas || (this.canvas = document.createElement("canvas")),
            this.canvas.width = t[0],
            this.canvas.height = t[1],
            this.Nz = this.canvas.getContext("2d"),
            this.Nz && (this.Nz.font = this.fontWeight + " " + this.fontSize + "px " + this.fontFamily,
            this.Nz.textBaseline = "middle",
            this.Nz.fillStyle = "black")
        }
        ,
        t.prototype.mU = function() {
            var t = this.size
              , e = ((e = t[0] * (t = t[1])) > this.AU.uf && (this.AU.ff(e),
            this.TU.ff(e)),
            0 <= ua.indexOf("Gecko/") || 0 <= ua.indexOf("Windows"));
            this.wU = Math.round(t / 2 * (e ? 1.2 : 1))
        }
        ,
        t.prototype.RU = function(t) {
            var e = this.SU(t, ControlChars)
              , t = this.SU(t, ZeroWidthChars);
            return e || t
        }
        ,
        t.prototype.SU = function(t, e) {
            for (var r = 0, n = e; r < n.length; r++) {
                var i = n[r];
                if (t >= i[0] && t <= i[1])
                    return !0
            }
        }
        ,
        t
    }();
    function expandTypeArray(t) {
        f.ff(t),
        d.ff(t),
        z.ff(t),
        v.ff(t)
    }
    function edt(t, e, r) {
        f.uf < r && expandTypeArray(r);
        for (var n = 0; n < e; n++) {
            for (var i = 0; i < r; i++)
                f.value[i] = t[i * e + n];
            for (edt1d(f.value, d.value, v.value, z.value, r),
            i = 0; i < r; i++)
                t[i * e + n] = d.value[i]
        }
        for (f.uf < e && expandTypeArray(r),
        i = 0; i < r; i++) {
            for (n = 0; n < e; n++)
                f.value[n] = t[i * e + n];
            for (edt1d(f.value, d.value, v.value, z.value, e),
            n = 0; n < e; n++)
                t[i * e + n] = Math.sqrt(d.value[n])
        }
    }
    function edt1d(t, e, r, n, i) {
        n[r[0] = 0] = -INF,
        n[1] = +INF;
        for (var a = 1, o = 0; a < i; a++) {
            for (var s = (t[a] + a * a - (t[r[o]] + r[o] * r[o])) / (2 * a - 2 * r[o]); s <= n[o]; )
                o--,
                s = (t[a] + a * a - (t[r[o]] + r[o] * r[o])) / (2 * a - 2 * r[o]);
            r[++o] = a,
            n[o] = s,
            n[o + 1] = +INF
        }
        for (o = a = 0; a < i; a++) {
            for (; n[o + 1] < a; )
                o++;
            e[a] = (a - r[o]) * (a - r[o]) + t[r[o]]
        }
    }
    var LangConf = {
        ch: {
            type: "ch",
            size: [32, 32],
            fontSize: 24,
            name: "中文简体"
        },
        en: {
            type: "en",
            size: [32, 32],
            fontSize: 24,
            name: "英文"
        },
        th: {
            type: "th",
            size: [32, 32],
            fontSize: 24,
            name: "泰语"
        },
        my: {
            type: "my",
            size: [56, 56],
            fontSize: 24,
            name: "缅甸语"
        },
        ja: {
            type: "ja",
            size: [32, 32],
            fontSize: 24,
            name: "日文"
        },
        km: {
            type: "km",
            size: [40, 40],
            fontSize: 24,
            name: "高棉语"
        },
        PU: {
            type: "lao",
            size: [40, 40],
            fontSize: 24,
            name: "老挝语"
        },
        $U: {
            type: "arabic",
            size: [40, 40],
            fontSize: 24,
            name: "阿拉伯语"
        },
        default: {
            type: "ch",
            size: [32, 32],
            fontSize: 24,
            name: "汉语"
        }
    }
      , Lang = function() {
        function t(t) {
            var e = (t = this.CU = t).type
              , r = t.size
              , t = t.fontSize
              , e = (this.type = e,
            this.width = r[0])
              , r = this.height = r[1];
            this.NU = new TinySDF(t,[e, r],(e - t) / 2,8,.25,"PingFang SC","normal")
        }
        return t.prototype.Ce = function(t) {
            return this.type === LangConf.PU.type ? (this.width = 10 * Math.floor(this.NU.measureText(t).width / 10) + 10 + LangConf.PU.fontSize / 2,
            this.NU.bU([this.width, this.height])) : (this.type === LangConf.my.type || this.type === LangConf.PU.type || this.type === LangConf.th.type || this.type === LangConf.$U.type || this.type === LangConf.km.type) && 1 < t.length && (this.width = Math.floor(this.CU.size[0] * t.length * .5),
            this.NU.bU([this.width, this.height])),
            this.NU.Ce(t)
        }
        ,
        t
    }()
      , LangManager = function() {
        function n() {
            this.OU = {}
        }
        return n.gG = function(t) {
            return t = t.split("|"),
            t = parseInt(t[0], 10),
            this.IU(t)
        }
        ,
        n.kU = function(t) {
            for (var e = [], r = 0; r < t.length; r++)
                e.push(t.charCodeAt(r));
            return n.gG(e.join("|"))
        }
        ,
        n.LU = function(t) {
            return t = n.kU(t),
            -1 !== n.EU.indexOf(t)
        }
        ,
        n.IU = function(t) {
            return 32 < t && t < 591 ? "en" : 4096 <= t && t <= 4255 ? "my" : 3584 <= t && t <= 3711 ? "th" : 6016 <= t && t <= 6143 ? "km" : 3712 <= t && t <= 3839 ? "lao" : 1536 <= t && t <= 1791 ? "arabic" : "ch"
        }
        ,
        n.prototype.D$ = function(t) {
            var e, r = this.OU[t = void 0 === t ? "ch" : t];
            return r || (e = LangConf[t] || LangConf.default,
            r = new Lang(e),
            this.OU[t] = r),
            r
        }
        ,
        n.EU = [LangConf.my.type, LangConf.km.type, LangConf.PU.type],
        n
    }()
      , CHN = [["90.398619", "47.62125"], ["90.493569", "47.512157"], ["90.491338", "47.430787"], ["90.552986", "47.391174"], ["90.522859", "47.318461"], ["90.584915", "47.224989"], ["90.782025", "47.019194"], ["90.923517", "46.97996"], ["90.986624", "46.807403"], ["91.082926", "46.722064"], ["91.051812", "46.596604"], ["91.100242", "46.564068"], ["91.102624", "46.537196"], ["90.935125", "46.300398"], ["91.032801", "46.126363"], ["91.055181", "46.011658"], ["90.741148", "45.713536"], ["90.699563", "45.544726"], ["90.700228", "45.504993"], ["90.795887", "45.449956"], ["90.832257", "45.31629"], ["90.919719", "45.26871"], ["90.920899", "45.225065"], ["91.136978", "45.244316"], ["91.253943", "45.164928"], ["91.372068", "45.142003"], ["91.45689", "45.18485"], ["91.624753", "45.098124"], ["92.062061", "45.11548"], ["92.497694", "45.030848"], ["92.887666", "45.075869"], ["93.513157", "44.997233"], ["94.22699", "44.694971"], ["94.374082", "44.542037"], ["94.620202", "44.47394"], ["94.737532", "44.366876"], ["95.002041", "44.282908"], ["95.42701", "44.324539"], ["95.440292", "44.292217"], ["95.365491", "44.054053"], ["95.549126", "44.026335"], ["95.883651", "43.431746"], ["95.911953", "43.287656"], ["96.385653", "42.919774"], ["96.41151", "42.75927"], ["97.176454", "42.824161"], ["98.198333", "42.682435"], ["99.505985", "42.597497"], ["99.964106", "42.676693"], ["100.259793", "42.666107"], ["100.320604", "42.718863"], ["100.867753", "42.700052"], ["101.814637", "42.530852"], ["102.090733", "42.250567"], ["102.451458", "42.173439"], ["102.716911", "42.181644"], ["103.426452", "41.910629"], ["103.858223", "41.830321"], ["104.537873", "41.903108"], ["104.55755", "41.881352"], ["104.554117", "41.69046"], ["104.929798", "41.682608"], ["105.010371", "41.620463"], ["105.220141", "41.778353"], ["105.732529", "41.977008"], ["106.776853", "42.319288"], ["107.167833", "42.354897"], ["107.458928", "42.487147"], ["107.937949", "42.433308"], ["108.241189", "42.489425"], ["108.84269", "42.425722"], ["109.022141", "42.487574"], ["109.290662", "42.465227"], ["109.534657", "42.500548"], ["109.723763", "42.60669"], ["110.100045", "42.671172"], ["110.420666", "42.80617"], ["111.005001", "43.354829"], ["111.446257", "43.521761"], ["111.555004", "43.519925"], ["111.780481", "43.697712"], ["111.925235", "43.719055"], ["111.936243", "43.796237"], ["111.863286", "43.902314"], ["111.643689", "44.039247"], ["111.386948", "44.360034"], ["111.610923", "44.793044"], ["111.742544", "44.988614"], ["111.9942", "45.118751"], ["112.435906", "45.103062"], ["112.61512", "44.956037"], ["112.806373", "44.882816"], ["113.624854", "44.775834"], ["113.896701", "44.9424"], ["114.104283", "44.984106"], ["114.437113", "45.233044"], ["114.543629", "45.41585"], ["114.742713", "45.46746"], ["114.977202", "45.40645"], ["115.36123", "45.421513"], ["115.688202", "45.487095"], ["116.023886", "45.712008"], ["116.163919", "45.717567"], ["116.251037", "45.785617"], ["116.213851", "45.874652"], ["116.246574", "45.98171"], ["116.56904", "46.316673"], ["116.83033", "46.413023"], ["117.353361", "46.390324"], ["117.41533", "46.528251"], ["117.39222", "46.582448"], ["117.411768", "46.610108"], ["117.618878", "46.628442"], ["117.72387", "46.549579"], ["118.312433", "46.768455"], ["118.774374", "46.71799"], ["118.828619", "46.795917"], ["118.912926", "46.804113"], ["118.941979", "46.764971"], ["119.028625", "46.769292"], ["119.119864", "46.669494"], ["119.724391", "46.623078"], ["119.791059", "46.707882"], ["119.884572", "46.701717"], ["119.896224", "46.880494"], ["119.836485", "46.899381"], ["119.742007", "47.13776"], ["119.30249", "47.404711"], ["119.315214", "47.461827"], ["119.134262", "47.517476"], ["119.10804", "47.64174"], ["118.755577", "47.747779"], ["118.55396", "47.96464"], ["118.177657", "48.02096"], ["117.82558", "47.987997"], ["117.388809", "47.612384"], ["117.082887", "47.796869"], ["116.816533", "47.867783"], ["116.452289", "47.808327"], ["116.270714", "47.845797"], ["115.938377", "47.653883"], ["115.559971", "47.900966"], ["115.500727", "48.161305"], ["115.791907", "48.279437"], ["115.776629", "48.537807"], ["116.042275", "48.826715"], ["116.024444", "48.890046"], ["116.709459", "49.880215"], ["117.07866", "49.723328"], ["117.482128", "49.648667"], ["117.801998", "49.554185"], ["117.858689", "49.620567"], ["118.068073", "49.643304"], ["118.210831", "49.759243"], ["118.358674", "49.80286"], ["118.37378", "49.853853"], ["118.468623", "49.857768"], ["118.559926", "49.957101"], ["119.082034", "50.01451"], ["119.311051", "50.169532"], ["119.328389", "50.327724"], ["119.175332", "50.320094"], ["119.103534", "50.373674"], ["119.103642", "50.409488"], ["119.224019", "50.469114"], ["119.262214", "50.625767"], ["119.470096", "50.763554"], ["119.480245", "50.910299"], ["119.734497", "51.106944"], ["119.73542", "51.228925"], ["119.789064", "51.243368"], ["119.787948", "51.298691"], ["119.896417", "51.365189"], ["119.889615", "51.410731"], ["119.950318", "51.426267"], ["120.067241", "51.699773"], ["120.632029", "51.963004"], ["120.755196", "52.16206"], ["120.733974", "52.23734"], ["120.60276", "52.318868"], ["120.688398", "52.529211"], ["120.459208", "52.615218"], ["120.046556", "52.554881"], ["120.004778", "52.785297"], ["120.275145", "52.889292"], ["120.877526", "53.323248"], ["121.231921", "53.310391"], ["122.338707", "53.534212"], ["122.443142", "53.474191"], ["122.84101", "53.486577"], ["123.278553", "53.592823"], ["123.480492", "53.533829"], ["123.518364", "53.587614"], ["123.901491", "53.509565"], ["124.129157", "53.379309"], ["124.260864", "53.404185"], ["124.447374", "53.252351"], ["124.696798", "53.233398"], ["124.854212", "53.143501"], ["124.877429", "53.19179"], ["125.14374", "53.233437"], ["125.500989", "53.129213"], ["125.53472", "53.084642"], ["125.631731", "53.108131"], ["125.776978", "53.000452"], ["125.732839", "52.906456"], ["125.842016", "52.927481"], ["125.973551", "52.795444"], ["126.049747", "52.829373"], ["126.137295", "52.788424"], ["126.136093", "52.7501"], ["126.082878", "52.727183"], ["126.094744", "52.66376"], ["126.01078", "52.632295"], ["126.225078", "52.557751"], ["126.227546", "52.502887"], ["126.28664", "52.498733"], ["126.378071", "52.405299"], ["126.365626", "52.334723"], ["126.460233", "52.313556"], ["126.457937", "52.278438"], ["126.370797", "52.21752"], ["126.587327", "52.146539"], ["126.544647", "52.022831"], ["126.483493", "52.004144"], ["126.489866", "51.963387"], ["126.757379", "51.72942"], ["126.769931", "51.638237"], ["126.737959", "51.604012"], ["126.870396", "51.541384"], ["126.8313", "51.449554"], ["126.939726", "51.411373"], ["126.952021", "51.35238"], ["127.007918", "51.339647"], ["126.930671", "51.194554"], ["126.950047", "51.077214"], ["127.328668", "50.761993"], ["127.324612", "50.674039"], ["127.399564", "50.585975"], ["127.336199", "50.480736"], ["127.39435", "50.441709"], ["127.374866", "50.346296"], ["127.622938", "50.242265"], ["127.624762", "50.159938"], ["127.524126", "50.053819"], ["127.569466", "49.832087"], ["127.686474", "49.798414"], ["127.716987", "49.69577"], ["127.838395", "49.617717"], ["128.185065", "49.56898"], ["128.533065", "49.633229"], ["128.791094", "49.618148"], ["128.84167", "49.562161"], ["128.811865", "49.506248"], ["129.022107", "49.485245"], ["129.11165", "49.389985"], ["129.230032", "49.429552"], ["129.343135", "49.392234"], ["129.383497", "49.461849"], ["129.526126", "49.451932"], ["129.593332", "49.316758"], ["129.745059", "49.313625"], ["129.972146", "49.057136"], ["130.243692", "48.89923"], ["130.444579", "48.939218"], ["130.526934", "48.889044"], ["130.693552", "48.907086"], ["130.705612", "48.869994"], ["130.580449", "48.630526"], ["130.630317", "48.609845"], ["130.648105", "48.52472"], ["130.790884", "48.525345"], ["130.778868", "48.413864"], ["130.875106", "48.300724"], ["130.708423", "48.108792"], ["130.914073", "47.945556"], ["131.01546", "47.736076"], ["131.552374", "47.750448"], ["131.621768", "47.692216"], ["131.711934", "47.740348"], ["131.958075", "47.703033"], ["131.995368", "47.741041"], ["132.235458", "47.739381"], ["132.340472", "47.796162"], ["132.546873", "47.750881"], ["132.655685", "47.89209"], ["132.654505", "47.979308"], ["132.811511", "47.967327"], ["133.097413", "48.158185"], ["133.473394", "48.128346"], ["133.728504", "48.281365"], ["134.199908", "48.411499"], ["134.519091", "48.448618"], ["134.797053", "48.402511"], ["134.903462", "48.476549"], ["135.111473", "48.465979"], ["135.087461", "48.366044"], ["134.70854", "48.235879"], ["134.705815", "48.142967"], ["134.587133", "47.991745"], ["134.802439", "47.732613"], ["134.805079", "47.701502"], ["134.584837", "47.454022"], ["134.327302", "47.405829"], ["134.203448", "47.309543"], ["134.189801", "47.25835"], ["134.258273", "47.190339"], ["134.25029", "47.096963"], ["134.160018", "47.066453"], ["134.091868", "46.968583"], ["134.042215", "46.633997"], ["133.892806", "46.477753"], ["133.978872", "46.404235"], ["133.938468", "46.35728"], ["133.943124", "46.251663"], ["133.734856", "46.143924"], ["133.77584", "46.068467"], ["133.698828", "45.924364"], ["133.509421", "45.823745"], ["133.533154", "45.779212"], ["133.488886", "45.719859"], ["133.513906", "45.69461"], ["133.496869", "45.599732"], ["133.229721", "45.489276"], ["133.168674", "45.414886"], ["133.124621", "45.258199"], ["133.158975", "45.105773"], ["132.946351", "44.989767"], ["131.996377", "45.226214"], ["131.893723", "45.301592"], ["131.80903", "45.186922"], ["131.72307", "45.208468"], ["131.688416", "45.166214"], ["131.716461", "45.107939"], ["131.507506", "44.942491"], ["131.131804", "44.90387"], ["131.021662", "44.839439"], ["131.137726", "44.723122"], ["131.338398", "44.056058"], ["131.273661", "43.974086"], ["131.248341", "43.566337"], ["131.344342", "43.514183"], ["131.346252", "43.391702"], ["131.236002", "43.22857"], ["131.242955", "43.131057"], ["131.13749", "43.018486"], ["131.168904", "42.923466"], ["131.065779", "42.901952"], ["131.05005", "42.834641"], ["130.673962", "42.819219"], ["130.46123", "42.731347"], ["130.617421", "42.685874"], ["130.650616", "42.595365"], ["130.604267", "42.509264"], ["130.661752", "42.412289"], ["130.553477", "42.421191"], ["130.507536", "42.571366"], ["130.42958", "42.523293"], ["130.416105", "42.590452"], ["130.235238", "42.692151"], ["130.237405", "42.873951"], ["130.125611", "42.876169"], ["130.075765", "42.911319"], ["130.092008", "42.956423"], ["129.933178", "42.975108"], ["129.878311", "42.92378"], ["129.795163", "42.719399"], ["129.815032", "42.601778"], ["129.735103", "42.411401"], ["129.607751", "42.418118"], ["129.55415", "42.330996"], ["129.383025", "42.403749"], ["129.268527", "42.323223"], ["129.222093", "42.257635"], ["129.2434", "42.19201"], ["128.992774", "42.075243"], ["128.959644", "41.997184"], ["128.121765", "41.974471"], ["128.183949", "41.746614"], ["128.336234", "41.608881"], ["128.268621", "41.434008"], ["128.127944", "41.337429"], ["128.00482", "41.417516"], ["127.65285", "41.377517"], ["127.537794", "41.447986"], ["127.248116", "41.454805"], ["127.234962", "41.492217"], ["127.08566", "41.544545"], ["127.128081", "41.592273"], ["127.012339", "41.679643"], ["127.035706", "41.702541"], ["126.914964", "41.778689"], ["126.809177", "41.669562"], ["126.74607", "41.691325"], ["126.612003", "41.629975"], ["126.529799", "41.412013"], ["126.562243", "41.368516"], ["126.557908", "41.33825"], ["126.45328", "41.325763"], ["126.3043", "41.139979"], ["126.148946", "41.070584"], ["126.132917", "40.990783"], ["126.041744", "40.924117"], ["126.041787", "40.876401"], ["125.721896", "40.840697"], ["125.681319", "40.80754"], ["125.712733", "40.774611"], ["125.686641", "40.761853"], ["125.582743", "40.75319"], ["125.423162", "40.624246"], ["125.310595", "40.636606"], ["125.022783", "40.521123"], ["125.06057", "40.46396"], ["124.907556", "40.445935"], ["124.374311", "40.078794"], ["124.388452", "39.905638"], ["123.741782", "39.10294"], ["123.282201", "38.058466"], ["124.24299", "31.368588"], ["124.714351", "29.508006"], ["125.072136", "25.859069"], ["124.935837", "25.676612"], ["123.836839", "25.5127"], ["122.751321", "24.515956"], ["121.947788", "22.070621"], ["121.867355", "21.383021"], ["119.827087", "18.177352"], ["119.026527", "16.873489"], ["119.11665", "15.951676"], ["119.101406", "14.063252"], ["119.100623", "12.209516"], ["119.07742", "11.23357"], ["116.011301", "7.678721"], ["114.941852", "6.182877"], ["114.229887", "5.47862"], ["113.86269", "4.692236"], ["112.795642", "3.695169"], ["111.953841", "3.231846"], ["109.894631", "3.714037"], ["108.659956", "4.748032"], ["107.925439", "5.91737"], ["107.96348", "6.895899"], ["108.555028", "9.28242"], ["110.128544", "11.338543"], ["109.983314", "12.44102"], ["109.806102", "13.535124"], ["109.636428", "14.636855"], ["109.78629", "15.402577"], ["109.449813", "15.723154"], ["108.117871", "17.258818"], ["107.310076", "18.842045"], ["107.374728", "19.467179"], ["108.051095", "20.114414"], ["108.328478", "21.187373"], ["108.278139", "21.403412"], ["108.107378", "21.47839"], ["107.943356", "21.509097"], ["107.849844", "21.619412"], ["107.547355", "21.55724"], ["107.470751", "21.571209"], ["107.451932", "21.615722"], ["107.357798", "21.570152"], ["107.289755", "21.702532"], ["107.207551", "21.682454"], ["106.998789", "21.79714"], ["107.015655", "21.907972"], ["106.951239", "21.893876"], ["106.768184", "21.978429"], ["106.703854", "21.935422"], ["106.674027", "21.941175"], ["106.664565", "22.266461"], ["106.643493", "22.30484"], ["106.538715", "22.328641"], ["106.53142", "22.460275"], ["106.592939", "22.622033"], ["106.708553", "22.615477"], ["106.793547", "22.794758"], ["106.548972", "22.899047"], ["106.304634", "22.830954"], ["106.190543", "22.951201"], ["106.088791", "22.966118"], ["105.867991", "22.889816"], ["105.712488", "23.033058"], ["105.550311", "23.045755"], ["105.530806", "23.163759"], ["105.330691", "23.346393"], ["105.249667", "23.237422"], ["105.089657", "23.231409"], ["104.951169", "23.149476"], ["104.843495", "23.101267"], ["104.893084", "22.94393"], ["104.747257", "22.79551"], ["104.567764", "22.813411"], ["104.371855", "22.65974"], ["104.249053", "22.720536"], ["104.237015", "22.806132"], ["104.137495", "22.783462"], ["104.078336", "22.740585"], ["104.017096", "22.520843"], ["103.962035", "22.492019"], ["103.666692", "22.741534"], ["103.525093", "22.580551"], ["103.458703", "22.648987"], ["103.394201", "22.751092"], ["103.341286", "22.767397"], ["103.306804", "22.661878"], ["103.215652", "22.621855"], ["103.205309", "22.536362"], ["103.107505", "22.486567"], ["103.076606", "22.416444"], ["102.91784", "22.456309"], ["102.840786", "22.583305"], ["102.610223", "22.696625"], ["102.558017", "22.673838"], ["102.493515", "22.738071"], ["102.424293", "22.676273"], ["102.446694", "22.621241"], ["102.327948", "22.511268"], ["102.278531", "22.386786"], ["102.142661", "22.36867"], ["102.03475", "22.427651"], ["101.942096", "22.415036"], ["101.8765", "22.355136"], ["101.764791", "22.472926"], ["101.700847", "22.453176"], ["101.694624", "22.349917"], ["101.579332", "22.223979"], ["101.631925", "21.988099"], ["101.718335", "21.962549"], ["101.79863", "21.848016"], ["101.778824", "21.73654"], ["101.856952", "21.62392"], ["101.847124", "21.595911"], ["101.773932", "21.558438"], ["101.760328", "21.349162"], ["101.862724", "21.239522"], ["101.764727", "21.115389"], ["101.663511", "21.164623"], ["101.587808", "21.146813"], ["101.574161", "21.209359"], ["101.53264", "21.221881"], ["101.293538", "21.149214"], ["101.203866", "21.206559"], ["101.216612", "21.289294"], ["101.114173", "21.403592"], ["101.183052", "21.497378"], ["101.111941", "21.560533"], ["101.095719", "21.734009"], ["100.901892", "21.659343"], ["100.747526", "21.494902"], ["100.586185", "21.423588"], ["100.468576", "21.433695"], ["100.414267", "21.504705"], ["100.248806", "21.434534"], ["100.115855", "21.481604"], ["100.078626", "21.591362"], ["100.11579", "21.654357"], ["100.010068", "21.666462"], ["99.916813", "21.811046"], ["99.968591", "21.972539"], ["99.950867", "22.023392"], ["99.699748", "22.008512"], ["99.585378", "22.083453"], ["99.19384", "22.094388"], ["99.129961", "22.147006"], ["99.24403", "22.347694"], ["99.226069", "22.407775"], ["99.348979", "22.505302"], ["99.289627", "22.751963"], ["99.429595", "22.858203"], ["99.422858", "22.95454"], ["99.521735", "22.955884"], ["99.488432", "23.051046"], ["99.336512", "23.101188"], ["99.258964", "23.048934"], ["99.10449", "23.057463"], ["98.99924", "23.151389"], ["98.858693", "23.167152"], ["98.89811", "23.292382"], ["98.844295", "23.323341"], ["98.878284", "23.4184"], ["98.821571", "23.466061"], ["98.773527", "23.530055"], ["98.849638", "23.617887"], ["98.774085", "23.751823"], ["98.656368", "23.775684"], ["98.63961", "23.801661"], ["98.649909", "23.978332"], ["98.828974", "24.077833"], ["98.83893", "24.109859"], ["98.594849", "24.051324"], ["98.534853", "24.098401"], ["98.118939", "24.06406"], ["97.652578", "23.812007"], ["97.500916", "23.916402"], ["97.507889", "23.946076"], ["97.703905", "24.12772"], ["97.7321", "24.242073"], ["97.646012", "24.307132"], ["97.678134", "24.384313"], ["97.653759", "24.420913"], ["97.528617", "24.403523"], ["97.504349", "24.421636"], ["97.520614", "24.750904"], ["97.686181", "24.867223"], ["97.726886", "24.872596"], ["97.701159", "24.901891"], ["97.691374", "25.085579"], ["97.816257", "25.289948"], ["97.844152", "25.297669"], ["97.93803", "25.249897"], ["98.122308", "25.413237"], ["98.152177", "25.643055"], ["98.313818", "25.589382"], ["98.380058", "25.615679"], ["98.510756", "25.863626"], ["98.635018", "25.83211"], ["98.668857", "25.860517"], ["98.546226", "26.121072"], ["98.648708", "26.171346"], ["98.686366", "26.138757"], ["98.648", "26.279486"], ["98.751404", "26.620222"], ["98.701365", "26.849746"], ["98.733852", "27.033154"], ["98.685272", "27.065508"], ["98.663149", "27.194049"], ["98.708661", "27.325701"], ["98.657935", "27.422786"], ["98.67244", "27.532116"], ["98.574979", "27.540164"], ["98.537407", "27.61841"], ["98.464022", "27.631357"], ["98.417695", "27.512725"], ["98.29766", "27.498051"], ["98.144388", "27.832814"], ["98.155954", "27.920407"], ["98.109477", "27.953809"], ["98.111", "28.123353"], ["97.991245", "28.182664"], ["97.984571", "28.253152"], ["97.904449", "28.328541"], ["97.775702", "28.306704"], ["97.650433", "28.498038"], ["97.537651", "28.471615"], ["97.537544", "28.300942"], ["97.374809", "28.215134"], ["97.340262", "28.085365"], ["97.441328", "28.020526"], ["97.41045", "27.866111"], ["97.271254", "27.865238"], ["97.104206", "27.710621"], ["97.074959", "27.716851"], ["96.959302", "27.833554"], ["96.799979", "27.862962"], ["96.485238", "28.041967"], ["96.435456", "28.122218"], ["96.282742", "28.11548"], ["96.254032", "28.195619"], ["96.011753", "28.160892"], ["95.866721", "28.266533"], ["95.747824", "28.246895"], ["95.417182", "28.118906"], ["95.304315", "27.916842"], ["94.898787", "27.716889"], ["94.531603", "27.567615"], ["94.290032", "27.552854"], ["93.888688", "27.17204"], ["93.845987", "27.008916"], ["93.571308", "26.909059"], ["92.944937", "26.862668"], ["92.647405", "26.922873"], ["92.093539", "26.830122"], ["92.094247", "26.952103"], ["91.998589", "27.089524"], ["92.083004", "27.299047"], ["92.034273", "27.387239"], ["91.995907", "27.444668"], ["91.729424", "27.433927"], ["91.566002", "27.518015"], ["91.534996", "27.644815"], ["91.602566", "27.75719"], ["91.514804", "27.82382"], ["91.562676", "27.867913"], ["91.468799", "27.914302"], ["91.441784", "27.98019"], ["91.319818", "28.026891"], ["91.09123", "27.815659"], ["90.700164", "28.042914"], ["90.592875", "27.992071"], ["90.457885", "28.016188"], ["90.284765", "28.126494"], ["90.15898", "28.149257"], ["90.026414", "28.108761"], ["89.808083", "28.209972"], ["89.741178", "28.14466"], ["89.620585", "28.133666"], ["89.394701", "27.853894"], ["89.261577", "27.776101"], ["89.129934", "27.494282"], ["89.208705", "27.359876"], ["89.003119", "27.183627"], ["88.914757", "27.261172"], ["88.754318", "27.459692"], ["88.742559", "27.575756"], ["88.824484", "27.683585"], ["88.858366", "27.84585"], ["88.817167", "27.989323"], ["88.749833", "28.04227"], ["88.643789", "28.079175"], ["88.414536", "27.948938"], ["88.164768", "27.927649"], ["88.119621", "27.836742"], ["87.844298", "27.914245"], ["87.731731", "27.773994"], ["87.596998", "27.78341"], ["87.555606", "27.832169"], ["87.226918", "27.783961"], ["87.114007", "27.809055"], ["87.017899", "27.921014"], ["86.741974", "28.007834"], ["86.699681", "28.06541"], ["86.621253", "28.036683"], ["86.583402", "28.057988"], ["86.53626", "27.935498"], ["86.410089", "27.875861"], ["86.21079", "27.953771"], ["86.168518", "28.117581"], ["86.115561", "28.075237"], ["86.149271", "27.905693"], ["85.994046", "27.879218"], ["85.944521", "27.932939"], ["85.832512", "28.151055"], ["85.730202", "28.210313"], ["85.701256", "28.320003"], ["85.608344", "28.222546"], ["85.501399", "28.296408"], ["85.379283", "28.245137"], ["85.108273", "28.308745"], ["85.080035", "28.467918"], ["85.159664", "28.55567"], ["85.153999", "28.618263"], ["85.06716", "28.641711"], ["84.995663", "28.560816"], ["84.851232", "28.539159"], ["84.68178", "28.609315"], ["84.624424", "28.696084"], ["84.465938", "28.711423"], ["84.389849", "28.828396"], ["84.202845", "28.880867"], ["84.21602", "29.009754"], ["84.163899", "29.035197"], ["84.138279", "29.170731"], ["84.156046", "29.210987"], ["84.110534", "29.218441"], ["84.085858", "29.266484"], ["83.922973", "29.294016"], ["83.658078", "29.134976"], ["83.571818", "29.151918"], ["83.232014", "29.552591"], ["83.070545", "29.578981"], ["82.920063", "29.684809"], ["82.816744", "29.661877"], ["82.675381", "29.739992"], ["82.684436", "29.800693"], ["82.605515", "29.811846"], ["82.541184", "29.930689"], ["82.159367", "30.045582"], ["82.174859", "30.141657"], ["82.084479", "30.216893"], ["82.077913", "30.310431"], ["81.993091", "30.291904"], ["81.637645", "30.413095"], ["81.562006", "30.34101"], ["81.44238", "30.380465"], ["81.419613", "30.185719"], ["81.306617", "30.138261"], ["81.279452", "29.994378"], ["81.11603", "30.010804"], ["80.995588", "30.23662"], ["80.302677", "30.539587"], ["80.0878", "30.543727"], ["79.94236", "30.672449"], ["79.868267", "30.834188"], ["79.825373", "30.839126"], ["79.673774", "30.945519"], ["79.593372", "30.894565"], ["79.4033", "31.036535"], ["79.346716", "31.001927"], ["79.336288", "30.933391"], ["79.224193", "30.920174"], ["79.170227", "30.981969"], ["79.092743", "30.963258"], ["78.986249", "31.027673"], ["78.96668", "31.157988"], ["78.856924", "31.281503"], ["78.783796", "31.274131"], ["78.728542", "31.344273"], ["78.757918", "31.433515"], ["78.697536", "31.51499"], ["78.804524", "31.611708"], ["78.62458", "31.82264"], ["78.722126", "31.927562"], ["78.578596", "31.999524"], ["78.497701", "32.11424"], ["78.432641", "32.118838"], ["78.402622", "32.220389"], ["78.4762", "32.31131"], ["78.36638", "32.528271"], ["78.381336", "32.554898"], ["78.75176", "32.731065"], ["78.809223", "32.496551"], ["78.976872", "32.364195"], ["79.005883", "32.376536"], ["79.080126", "32.394077"], ["79.114029", "32.491665"], ["79.279168", "32.61355"], ["79.272795", "32.713951"], ["79.195912", "32.779409"], ["79.222884", "32.93039"], ["79.135616", "33.001861"], ["79.1289", "33.16414"], ["78.818901", "33.407102"], ["78.715496", "33.540948"], ["78.723736", "33.604683"], ["78.656015", "33.65053"], ["78.749506", "33.746395"], ["78.715582", "33.972994"], ["78.631468", "34.014908"], ["78.635867", "34.100789"], ["78.894839", "34.171104"], ["78.97243", "34.341399"], ["78.867137", "34.336615"], ["78.698266", "34.491737"], ["78.566988", "34.478543"], ["78.527312", "34.539705"], ["78.430667", "34.514354"], ["78.403587", "34.570207"], ["78.247139", "34.615374"], ["78.238835", "34.685346"], ["78.179204", "34.722162"], ["78.172767", "34.964414"], ["78.056982", "35.102584"], ["77.985699", "35.231108"], ["77.986279", "35.376996"], ["78.060694", "35.455461"], ["77.904546", "35.435236"], ["77.815948", "35.484733"], ["77.688854", "35.41908"], ["77.389219", "35.439747"], ["77.300084", "35.509365"], ["77.189727", "35.490691"], ["76.844516", "35.637645"], ["76.746969", "35.630442"], ["76.675837", "35.721674"], ["76.57151", "35.752903"], ["76.552477", "35.878323"], ["76.372211", "35.795695"], ["76.149781", "35.797227"], ["76.124933", "35.947734"], ["75.922673", "36.058952"], ["75.911558", "36.150212"], ["76.037836", "36.25097"], ["75.962627", "36.325913"], ["75.987883", "36.449905"], ["75.852334", "36.642976"], ["75.645268", "36.740208"], ["75.442793", "36.696296"], ["75.389578", "36.92691"], ["75.229053", "36.936669"], ["75.144038", "36.993436"], ["74.896481", "36.905551"], ["74.830134", "37.022531"], ["74.731107", "36.999897"], ["74.690745", "37.052831"], ["74.559724", "37.004866"], ["74.481919", "37.046871"], ["74.437845", "37.120308"], ["74.499922", "37.266966"], ["74.739861", "37.314987"], ["74.866312", "37.253902"], ["75.109062", "37.372562"], ["75.102367", "37.44057"], ["74.921629", "37.536802"], ["74.864573", "37.654148"], ["74.964759", "37.773242"], ["74.890065", "37.834937"], ["74.908884", "37.982278"], ["74.777327", "38.153069"], ["74.761705", "38.335766"], ["74.838288", "38.415972"], ["74.834661", "38.466073"], ["74.630191", "38.571841"], ["74.373536", "38.625873"], ["74.159667", "38.646204"], ["74.103234", "38.581"], ["74.111817", "38.521998"], ["74.000838", "38.494528"], ["73.77285", "38.599147"], ["73.670411", "38.8621"], ["73.725193", "38.95749"], ["73.802719", "38.951449"], ["73.807654", "38.986017"], ["73.72221", "39.008697"], ["73.473516", "39.38863"], ["73.616295", "39.498494"], ["73.852308", "39.511093"], ["73.918183", "39.600828"], ["73.897347", "39.705585"], ["73.808942", "39.800228"], ["73.93934", "39.994893"], ["73.923182", "40.040084"], ["74.206402", "40.150079"], ["74.349396", "40.120697"], ["74.57305", "40.295485"], ["74.65313", "40.30568"], ["74.68538", "40.371234"], ["74.834146", "40.370645"], ["74.764109", "40.445837"], ["74.82522", "40.547706"], ["74.991968", "40.485604"], ["75.234225", "40.478276"], ["75.595829", "40.68866"], ["75.623209", "40.675235"], ["75.670288", "40.537172"], ["75.761075", "40.482617"], ["75.702088", "40.361506"], ["75.718331", "40.319244"], ["75.831778", "40.356634"], ["75.909498", "40.327457"], ["75.962198", "40.405801"], ["76.169136", "40.4108"], ["76.276231", "40.468254"], ["76.350474", "40.381058"], ["76.518981", "40.485522"], ["76.629574", "40.63177"], ["76.618888", "40.769281"], ["76.705191", "40.836687"], ["76.738064", "40.970777"], ["76.866853", "41.052415"], ["77.002079", "41.102703"], ["77.174621", "41.038594"], ["77.761016", "41.051719"], ["77.819595", "41.177071"], ["78.104789", "41.252161"], ["78.153155", "41.41058"], ["78.633699", "41.494773"], ["78.691227", "41.573398"], ["79.204752", "41.752489"], ["79.314144", "41.836204"], ["79.760721", "41.919283"], ["79.886034", "42.062214"], ["80.133162", "42.067184"], ["80.141101", "42.212865"], ["80.253518", "42.271926"], ["80.176806", "42.427971"], ["80.233755", "42.509043"], ["80.134728", "42.629333"], ["80.233669", "42.836907"], ["80.527124", "42.908804"], ["80.358446", "43.012006"], ["80.363209", "43.05597"], ["80.77054", "43.196057"], ["80.751915", "43.283969"], ["80.657952", "43.321619"], ["80.722024", "43.489763"], ["80.498157", "43.799783"], ["80.367136", "44.112086"], ["80.382199", "44.282371"], ["80.320637", "44.484489"], ["80.375676", "44.600628"], ["80.200903", "44.711915"], ["80.153825", "44.809898"], ["79.982829", "44.769908"], ["79.863417", "44.896027"], ["79.863911", "44.925979"], ["80.099001", "45.081976"], ["80.380783", "45.073778"], ["80.472493", "45.151008"], ["80.593643", "45.1361"], ["80.723355", "45.20611"], ["80.897505", "45.157969"], ["81.777248", "45.412611"], ["81.933761", "45.262246"], ["82.295816", "45.254845"], ["82.544253", "45.206065"], ["82.569401", "45.340669"], ["82.52743", "45.402307"], ["82.265496", "45.514783"], ["82.238288", "45.626914"], ["82.311373", "45.780155"], ["82.319655", "45.956177"], ["82.440763", "46.003982"], ["82.822452", "46.775333"], ["83.012309", "47.24291"], ["83.148286", "47.241861"], ["83.371532", "47.179737"], ["83.583899", "47.087891"], ["83.927865", "46.999324"], ["84.753106", "47.038661"], ["84.955001", "46.896507"], ["85.227256", "47.083274"], ["85.529079", "47.087102"], ["85.670679", "47.295094"], ["85.656817", "47.416255"], ["85.581307", "47.505664"], ["85.500433", "48.023314"], ["85.564678", "48.210504"], ["85.778117", "48.445159"], ["86.21609", "48.461326"], ["86.297393", "48.520485"], ["86.571493", "48.56921"], ["86.745751", "48.738276"], ["86.72689", "48.79468"], ["86.785169", "48.850936"], ["86.706676", "48.980358"], ["86.708565", "49.011387"], ["86.889625", "49.162344"], ["87.145572", "49.183316"], ["87.435358", "49.10582"], ["87.476878", "49.120484"], ["87.490826", "49.169134"], ["87.836187", "49.198616"], ["87.895432", "49.115877"], ["87.87024", "49.056222"], ["87.9406", "48.974696"], ["87.803872", "48.87904"], ["88.125672", "48.72326"], ["88.023491", "48.591881"], ["88.35763", "48.495848"], ["88.450756", "48.423234"], ["88.527102", "48.435337"], ["88.631537", "48.352171"], ["88.608513", "48.280466"], ["88.657844", "48.207172"], ["88.828926", "48.136652"], ["88.942652", "48.146274"], ["89.088199", "48.017358"], ["89.571383", "48.066881"], ["89.777999", "47.863838"], ["90.077548", "47.910676"], ["90.155997", "47.747389"], ["90.399628", "47.669347"], ["90.413575", "47.647046"], ["90.398619", "47.62125"]]
      , JPN = [["145.824681", "43.408601"], ["145.802708", "43.198731"], ["145.188847", "43.068449"], ["144.992667", "42.907867"], ["143.970938", "42.890345"], ["143.384543", "42.351736"], ["143.299399", "41.875506"], ["142.95333", "42.100071"], ["142.391844", "42.272669"], ["141.369501", "42.535185"], ["140.832544", "42.147648"], ["141.028863", "41.945699"], ["141.296655", "41.765675"], ["141.564447", "41.265171"], ["141.675004", "40.481173"], ["141.829516", "40.300647"], ["141.982619", "40.122464"], ["142.142627", "39.594221"], ["142.025897", "39.368452"], ["142.021777", "39.317473"], ["141.850783", "38.901626"], ["140.939308", "35.65669"], ["139.436268", "34.193845"], ["137.347075", "34.1603"], ["135.63835", "33.29272"], ["133.488103", "32.70897"], ["131.614016", "31.325292"], ["130.633951", "28.842845"], ["127.785048", "25.789008"], ["126.597333", "26.344784"], ["128.404011", "28.563857"], ["128.940636", "30.856318"], ["128.544464", "32.79621"], ["129.194642", "34.475467"], ["129.324698", "34.765641"], ["129.502255", "34.700627"], ["129.480282", "33.855809"], ["130.439605", "33.915587"], ["130.801388", "34.159716"], ["130.791882", "34.445506"], ["131.121471", "34.437578"], ["131.298124", "34.567727"], ["132.535148", "35.287335"], ["132.978675", "36.154847"], ["133.268559", "36.366209"], ["134.710796", "35.708808"], ["135.303308", "35.794165"], ["136.404389", "36.456814"], ["136.612743", "37.37546"], ["137.409252", "37.580348"], ["137.291471", "36.906421"], ["137.982237", "37.126821"], ["138.504087", "37.383552"], ["138.758146", "37.83898"], ["139.207212", "38.04151"], ["139.310081", "38.315743"], ["139.737028", "38.85997"], ["139.403318", "39.234917"], ["139.952634", "39.328459"], ["140.002073", "39.745742"], ["139.695586", "39.824208"], ["139.679107", "40.025361"], ["139.935912", "40.077921"], ["140.001079", "40.309807"], ["139.922802", "40.434311"], ["139.828954", "40.646676"], ["139.95008", "40.766604"], ["139.957833", "41.432491"], ["140.001779", "42.027933"], ["139.389291", "42.038134"], ["139.346719", "42.242877"], ["139.63099", "42.291658"], ["139.72712", "42.641155"], ["139.942098", "42.710048"], ["140.194783", "42.842098"], ["140.30396", "42.856193"], ["140.309453", "43.306551"], ["140.393224", "43.399418"], ["140.61976", "43.355264"], ["140.788732", "43.238558"], ["140.923314", "43.24556"], ["141.029058", "43.24356"], ["141.083989", "43.216544"], ["141.141667", "43.185513"], ["141.336675", "43.240561"], ["141.328435", "43.731771"], ["141.350408", "43.792272"], ["141.594854", "43.937818"], ["141.565334", "44.291761"], ["141.70541", "44.45177"], ["141.708157", "44.742196"], ["141.683437", "45.002047"], ["141.226594", "45.076599"], ["141.053559", "45.165748"], ["140.987641", "45.335905"], ["140.943696", "45.481498"], ["141.201589", "45.501064"], ["141.972005", "45.52416"], ["142.341996", "45.204477"], ["142.567215", "45.014513"], ["142.747966", "44.801094"], ["143.487122", "44.343678"], ["144.463587", "44.078617"], ["144.874201", "44.098345"], ["145.125513", "44.222478"], ["145.300832", "44.391445"], ["145.487445", "44.320885"], ["145.111163", "43.848378"], ["145.420933", "43.545126"], ["145.451146", "43.393635"]]
      , EAST = [["73.757316", "29.95798"], ["73.045185", "28.989136"], ["72.434431", "28.60931"], ["72.060098", "28.097836"], ["71.631749", "27.60702"], ["70.67236", "27.593264"], ["69.82743", "27.041579"], ["70.337045", "26.566045"], ["70.070655", "26.098932"], ["70.070655", "25.85946"], ["70.290717", "25.713457"], ["70.626599", "25.671708"], ["70.68451", "25.201036"], ["70.974064", "24.791642"], ["70.811914", "24.612763"], ["70.139151", "24.465923"], ["69.268014", "24.435423"], ["68.313114", "24.267539"], ["67.911051", "23.808548"], ["68.547651", "23.00912"], ["69.11724", "22.684917"], ["68.748682", "22.406416"], ["69.301519", "21.536417"], ["70.153052", "20.55461"], ["71.170222", "20.332219"], ["72.234349", "21.204506"], ["72.501752", "21.087142"], ["72.627589", "19.003767"], ["72.973641", "16.878922"], ["74.267757", "13.888898"], ["75.369075", "10.48118"], ["76.976429", "7.781262"], ["78.374805", "8.242836"], ["79.427902", "9.641233"], ["80.513091", "10.734685"], ["80.254133", "11.953377"], ["80.702994", "13.082541"], ["80.402232", "15.312175"], ["82.991824", "16.887862"], ["85.259974", "19.051683"], ["87.784208", "21.10679"], ["89.263244", "21.658877"], ["89.121009", "23.437218"], ["88.869364", "23.717994"], ["88.93501", "24.317619"], ["88.267603", "24.596482"], ["88.727129", "25.073086"], ["89.186656", "25.132532"], ["88.891246", "25.626788"], ["88.650542", "25.666241"], ["88.201956", "25.892841"], ["88.420778", "26.12883"], ["88.54113", "26.285892"], ["89.241361", "26.020727"], ["89.613359", "25.863309"], ["89.657124", "25.330477"], ["90.190932", "25.070998"], ["91.175632", "25.051175"], ["91.811935", "25.05221"], ["92.234344", "24.983507"], ["92.104658", "24.649259"], ["91.844714", "24.363456"], ["91.46563", "24.215373"], ["90.999897", "23.839459"], ["91.216517", "23.054471"], ["91.389672", "22.300847"], ["92.125338", "20.623521"], ["93.946113", "18.753448"], ["92.823675", "16.135717"], ["91.224276", "9.998681"], ["93.522355", "5.752403"], ["96.409859", "0.991383"], ["100.048825", "-3.72227"], ["104.60328", "-7.736835"], ["114.01025", "-9.967468"], ["123.433702", "-11.032285"], ["123.717523", "-10.536628"], ["124.427075", "-10.257467"], ["125.004217", "-9.79418"], ["125.026253", "-9.527403"], ["125.12788", "-9.406056"], ["125.031601", "-9.358561"], ["124.946021", "-9.216037"], ["125.026253", "-9.168516"], ["125.192065", "-9.13155"], ["125.181368", "-8.982538"], ["124.999509", "-8.987821"], ["124.919277", "-8.924418"], ["125.095787", "-8.596662"], ["125.555784", "-8.088612"], ["125.721597", "-8.120384"], ["127.292232", "-8.326419"], ["132.424841", "-8.447132"], ["139.646777", "-8.512957"], ["141.039618", "-9.209048"], ["141.025347", "-6.894209"], ["140.978655", "-6.887392"], ["140.92235", "-6.851943"], ["140.912737", "-6.791946"], ["140.905871", "-6.737397"], ["140.850939", "-6.695117"], ["140.903124", "-6.59554"], ["140.945696", "-6.509588"], ["141.000442", "-6.341825"], ["140.971754", "-2.322171"], ["131.63417", "2.671779"], ["125.182746", "17.665698"], ["120.512231", "19.243264"], ["119.486602", "16.550429"], ["119.820154", "12.379244"], ["115.293339", "5.77989"], ["114.675587", "4.850295"], ["114.550618", "4.735342"], ["113.923024", "4.60805"], ["113.581092", "3.881824"], ["113.423754", "3.763395"], ["113.138025", "3.427757"], ["112.798973", "3.119213"], ["111.886744", "2.960093"], ["109.608393", "3.016867"], ["108.771364", "3.935896"], ["107.181008", "7.101455"], ["110.509765", "12.398562"], ["108.171244", "18.449712"], ["108.482399", "21.923911"], ["106.042422", "23.36869"], ["103.861684", "23.500971"], ["101.853026", "22.51803"], ["101.964992", "22.453371"], ["102.079606", "22.467488"], ["102.100842", "22.366033"], ["102.192713", "22.264854"], ["102.457234", "22.052786"], ["102.482552", "21.991854"], ["102.505944", "21.933096"], ["102.598494", "21.858522"], ["102.635027", "21.768076"], ["102.625285", "21.706993"], ["102.652076", "21.663993"], ["102.749497", "21.641356"], ["102.798208", "21.673047"], ["102.841349", "21.836472"], ["102.857688", "21.688772"], ["102.936435", "21.684707"], ["102.971433", "21.587108"], ["102.897061", "21.530145"], ["102.831439", "21.416153"], ["102.853313", "21.363197"], ["102.770191", "21.249074"], ["102.905811", "20.975636"], ["103.219101", "20.747931"], ["103.517772", "20.714677"], ["103.809332", "20.581588"], ["103.928404", "20.796397"], ["104.17602", "20.868718"], ["104.456453", "20.674762"], ["104.597217", "20.649539"], ["104.494205", "20.561152"], ["104.33078", "20.448774"], ["104.574769", "20.381484"], ["104.658948", "20.213054"], ["104.76838", "20.149846"], ["104.838529", "20.181454"], ["104.938282", "20.043215"], ["104.745932", "19.888842"], ["104.790827", "19.817585"], ["104.656142", "19.725166"], ["104.580381", "19.643265"], ["104.41625", "19.738372"], ["104.315236", "19.711959"], ["104.004834", "19.776374"], ["103.978829", "19.601517"], ["104.057089", "19.487272"], ["103.795479", "19.292317"], ["104.05618", "19.205901"], ["104.303857", "19.041792"], ["104.509718", "18.953592"], ["104.638381", "18.819682"], ["104.82816", "18.734411"], ["105.081179", "18.714495"], ["105.090265", "18.561021"], ["105.010482", "18.494337"], ["105.215532", "18.232365"], ["105.507333", "18.022503"], ["105.673181", "17.706155"], ["105.959258", "17.411042"], ["106.393016", "16.974064"], ["106.530565", "16.907086"], ["106.511314", "16.705452"], ["106.610307", "16.485756"], ["106.704089", "16.360817"], ["106.855183", "16.430793"], ["106.917705", "16.245803"], ["107.074009", "16.275813"], ["107.178212", "16.130721"], ["107.386617", "15.975505"], ["107.256364", "15.895346"], ["107.157745", "15.729918"], ["107.270294", "15.538977"], ["107.541111", "15.371176"], ["107.598724", "15.119441"], ["107.495192", "15.087312"], ["107.421241", "14.973038"], ["107.491494", "14.719275"], ["107.439728", "14.558285"], ["107.365777", "14.619117"], ["107.28443", "14.576179"], ["107.125343", "14.454386"], ["107.058787", "14.468707"], ["106.862816", "14.336197"], ["106.714913", "14.443644"], ["106.640961", "14.525985"], ["106.467176", "14.622607"], ["106.385829", "14.475868"], ["106.219438", "14.500928"], ["106.189858", "14.42932"], ["106.104814", "14.407834"], ["105.956911", "14.346944"], ["105.993887", "14.192854"], ["106.138092", "14.056594"], ["106.067838", "13.984846"], ["105.938423", "13.948964"], ["105.860774", "14.067355"], ["105.570516", "14.196239"], ["105.40579", "14.123984"], ["105.307739", "14.207645"], ["105.23322", "14.257067"], ["105.284207", "14.321679"], ["105.397946", "14.336879"], ["105.499919", "14.435654"], ["105.550906", "14.617894"], ["105.535217", "14.773437"], ["105.660723", "14.90613"], ["105.629347", "15.019802"], ["105.511685", "15.118269"], ["105.543062", "15.182626"], ["105.660723", "15.2848"], ["105.543062", "15.368016"], ["105.641113", "15.40205"], ["105.652879", "15.526792"], ["105.672489", "15.723201"], ["105.433244", "15.866611"], ["105.419865", "16.077323"], ["105.134284", "16.158015"], ["105.05029", "16.303179"], ["104.798307", "16.56635"], ["104.815106", "16.791639"], ["104.807079", "17.064937"], ["104.834545", "17.357467"], ["104.746654", "17.518618"], ["104.392993", "17.569592"], ["104.221867", "17.790865"], ["104.071113", "18.043041"], ["103.989584", "18.196169"], ["103.880878", "18.236734"], ["103.692584", "18.269917"], ["103.616878", "18.310466"], ["103.546996", "18.349162"], ["103.428584", "18.336313"], ["103.370348", "18.277339"], ["103.302336", "18.221647"], ["103.237773", "18.102183"], ["103.207191", "18.040806"], ["103.105249", "17.937384"], ["102.938746", "17.875949"], ["102.914959", "17.827432"], ["102.813018", "17.765959"], ["102.687291", "17.753015"], ["102.568359", "17.830667"], ["102.510593", "17.840371"], ["102.422244", "17.921219"], ["102.310109", "17.960013"], ["102.204769", "17.995566"], ["102.143605", "18.066652"], ["101.987295", "17.966477"], ["101.868364", "17.927685"], ["101.647491", "17.811257"], ["101.148809", "17.535022"], ["101.023374", "17.599797"], ["101.039054", "17.808912"], ["101.175591", "17.993048"], ["101.212078", "18.10208"], ["101.219896", "18.173904"], ["101.206865", "18.240749"], ["101.212078", "18.344679"], ["101.107829", "18.394147"], ["101.092192", "18.45349"], ["101.206865", "18.578877"], ["101.31372", "18.655442"], ["101.272021", "18.741845"], ["101.272021", "18.830671"], ["101.311114", "18.939171"], ["101.370997", "19.079681"], ["101.298023", "19.148632"], ["101.279779", "19.212632"], ["101.22818", "19.375675"], ["101.230424", "19.441269"], ["101.295484", "19.487804"], ["101.29997", "19.591402"], ["101.239397", "19.633668"], ["101.145173", "19.587175"], ["101.093574", "19.629442"], ["100.94102", "19.650571"], ["100.893907", "19.65691"], ["100.864742", "19.616763"], ["100.835578", "19.570265"], ["100.770518", "19.534326"], ["100.611233", "19.574493"], ["100.584312", "19.52164"], ["100.525983", "19.540669"], ["100.46541", "19.637894"], ["100.436245", "19.777288"], ["100.541687", "19.91867"], ["100.597773", "20.190526"], ["100.502946", "20.195053"], ["100.428788", "20.262059"], ["100.379218", "20.36601"], ["100.329779", "20.413638"], ["100.244635", "20.387895"], ["100.173224", "20.317079"], ["100.160865", "20.244943"], ["100.114789", "20.260301"], ["100.107922", "20.315689"], ["100.155988", "20.507461"], ["100.211891", "20.650056"], ["100.290818", "20.736459"], ["100.399973", "20.811825"], ["100.562866", "20.788277"], ["100.673701", "20.899705"], ["100.59616", "20.954029"], ["100.751867", "21.254036"], ["100.998402", "21.338663"], ["101.211622", "21.580378"], ["101.209043", "21.846211"], ["100.909901", "21.894492"], ["100.207565", "21.580378"], ["100.051491", "22.159742"], ["99.466212", "22.436515"], ["99.71333", "23.024318"], ["99.352488", "23.281431"], ["99.03983", "24.3247"], ["98.101855", "24.95993"], ["98.855913", "25.608485"], ["98.911088", "26.812993"], ["98.892697", "27.483968"], ["98.340947", "27.826069"], ["98.120247", "28.377665"], ["97.586888", "28.733061"], ["97.108705", "28.329109"], ["96.658506", "27.787659"], ["96.296725", "28.010502"], ["95.847241", "28.136253"], ["95.288126", "27.787659"], ["94.685158", "27.233428"], ["93.281889", "26.647032"], ["92.037851", "26.720259"], ["90.141229", "26.820605"], ["88.984724", "26.833974"], ["88.731159", "27.080308"], ["88.794435", "27.331629"], ["88.741186", "27.914582"], ["88.223484", "27.953015"], ["88.169108", "27.50057"], ["87.774017", "27.262697"], ["88.215457", "26.870398"], ["87.783036", "26.535989"], ["87.047344", "26.702224"], ["84.777332", "27.310285"], ["83.539214", "27.665305"], ["82.385985", "27.880248"], ["81.010299", "28.662263"], ["80.547568", "29.001896"], ["81.345045", "30.304903"], ["80.749935", "31.185747"], ["80.056967", "31.015739"], ["79.215234", "31.178494"], ["78.991224", "31.346766"], ["79.254658", "31.656243"], ["78.835019", "31.979804"], ["78.65109", "32.12011"], ["78.595912", "32.240756"], ["78.591313", "32.400075"], ["78.669483", "32.54361"], ["78.739513", "32.426665"], ["78.84424", "32.288005"], ["79.067657", "32.24668"], ["79.277111", "32.470789"], ["79.395802", "32.676713"], ["79.235221", "33.233259"], ["79.011803", "33.47819"], ["78.84424", "33.681772"], ["79.182009", "34.336185"], ["78.821102", "34.565916"], ["78.428537", "34.758609"], ["78.294895", "34.940474"], ["78.23791", "35.530039"], ["77.722544", "35.628785"], ["77.294994", "35.609184"], ["76.821489", "35.701892"], ["76.684572", "35.988603"], ["76.399329", "35.919333"], ["76.159724", "35.933192"], ["76.165429", "36.20986"], ["76.074151", "36.366207"], ["75.999987", "36.641347"], ["75.714744", "36.787688"], ["75.562518", "36.805399"], ["75.481245", "36.811057"], ["75.45651", "36.950968"], ["75.253968", "37.023882"], ["75.084541", "37.066268"], ["74.894884", "37.084426"], ["74.735572", "37.122745"], ["74.643309", "37.074934"], ["74.566145", "37.033976"], ["74.549925", "36.938948"], ["74.491692", "37.015218"], ["74.377803", "36.998366"], ["74.261908", "36.915016"], ["74.132106", "36.91687"], ["74.057933", "36.840851"], ["73.967535", "36.853836"], ["73.925813", "36.892775"], ["73.808039", "36.908632"], ["73.728388", "36.920709"], ["73.639124", "36.911926"], ["73.699986", "36.820121"], ["73.765904", "36.814624"], ["73.833196", "36.776135"], ["73.853795", "36.743128"], ["73.834569", "36.711208"], ["73.735692", "36.736525"], ["73.657414", "36.707906"], ["73.599736", "36.711208"], ["73.57227", "36.735425"], ["73.517339", "36.729922"], ["73.397862", "36.757433"], ["73.319585", "36.738726"], ["73.241307", "36.720664"], ["73.175389", "36.732772"], ["73.112218", "36.71516"], ["73.032567", "36.686532"], ["73.039433", "36.651284"], ["73.060033", "36.609405"], ["73.036687", "36.564195"], ["73.002355", "36.529994"], ["72.958409", "36.507921"], ["72.944676", "36.475904"], ["72.886998", "36.474799"], ["72.855412", "36.448292"], ["72.848546", "36.400777"], ["72.832334", "36.374217"], ["72.796629", "36.362053"], ["72.685258", "36.303681"], ["72.663286", "36.274901"], ["72.574022", "36.267151"], ["72.461412", "36.175196"], ["73.530389", "35.809316"], ["74.170542", "35.420826"], ["74.340245", "35.055408"], ["73.9237", "34.612198"], ["73.676858", "34.332391"], ["73.880481", "33.422673"], ["74.651862", "32.906095"], ["75.747223", "32.542685"], ["75.623802", "32.256112"], ["74.975842", "31.968632"], ["74.759855", "31.732749"], ["74.759855", "30.955369"], ["74.327882", "30.584206"], ["74.18929", "30.224947"], ["74.035013", "29.864372"]]
      , getOutseaData = function(t) {
        return t && "mapbox" === t ? {
            boundsP16: [[CHN]],
            nebulaOutSea: []
        } : {
            boundsP16: [[CHN], [JPN], [EAST]],
            nebulaOutSea: [[JPN], [EAST]]
        }
    }
      , geoUtil = new GeometryUtilCls({})
      , CONSTS$1 = {
        sV: "https://webapi.amap.com/style_icon/sprite_v8@2x.png",
        EU: [LangConf.my.type, LangConf.km.type, LangConf.PU.type, LangConf.th.type, LangConf.$U.type]
    }
      , MapboxLabelFormat = function(r) {
        function t(t) {
            var e = r.call(this) || this;
            return e.kQ = {},
            e
        }
        return __extends(t, r),
        t.prototype.Ns = function(t, e) {
            return r.prototype.Ns.call(this, t, e),
            this.rV(t, e)
        }
        ,
        t.prototype.rV = function(t, e) {
            var r, n, i = (t.data || {}).poilabel || [], a = t.road || [], o = {}, s = this.hV(t);
            for (r in i)
                i.hasOwnProperty(r) && (n = i[r],
                n = this.nV(n, s, e.zoom, e.VQ),
                o[r] = n);
            return this.oV(a, {}),
            o
        }
        ,
        t.prototype.nV = function(t, e, r, n) {
            for (var i = [], a = this.kQ, o = 0, s = t; o < s.length; o++) {
                var u, c, f, h, l, d, v, g, p, m = (y = s[o]).name, b = y.position, T = y.id, x = y.minzoom, M = y.maxzoom, y = void 0 === (y = y.style) ? {} : y;
                "mapbox" !== n && 9 <= r && e && !this.uV(b[0]) || (u = y.lV,
                c = y.th,
                f = y.ih,
                d = y.nh,
                g = y.qU,
                v = y.eh,
                h = void 0 === (h = y.textAnchor) ? "bottom" : h,
                l = y.rh,
                y.sh,
                p = y.Kr,
                y = y.Qr,
                x = [x, M],
                M = null,
                d && g && v && (this.Fs[CONSTS$1.sV] = 1,
                M = [{
                    image: CONSTS$1.sV,
                    size: [g[6] / 2, g[7] / 2],
                    clipOrigin: [g[4], g[5]],
                    clipSize: [g[6], g[7]]
                }]),
                d = null,
                m && p && (a[p] || (a[p] = Util.color2RgbaArray(p)),
                v = a[p],
                g = void 0,
                p = 0,
                a[y] || (a[y] = Util.color2RgbaArray(y || "")),
                a[y] && (g = a[y],
                p = 3),
                y = this.fV(m) ? [0, m.length] : [],
                this.Ws(m, y),
                d = {
                    txt: m,
                    $G: y,
                    direction: h || "center",
                    offset: [0, 0],
                    style: {
                        fontSize: l,
                        fillColor: v,
                        strokeColor: g,
                        strokeWidth: p,
                        fold: !1
                    }
                }),
                y = {
                    data: {
                        id: T,
                        name: m,
                        txt: m,
                        position: b[0],
                        positionType: "relative",
                        zooms: [c, f],
                        extData: {
                            id: T,
                            type: "poi"
                        }
                    },
                    opts: {
                        zIndex: u,
                        zooms: x,
                        visible: !0
                    }
                },
                M && (y.opts.icon = M),
                d && (y.opts.text = d),
                (y.opts.text || y.opts.icon) && i.push(y))
            }
            return i
        }
        ,
        t.prototype.oV = function(t, e) {
            for (var r = 0, n = t; r < n.length; r++) {
                var i = n[r].name
                  , a = this.fV(i) ? [0, i.length] : [];
                i && this.Ws(i, a)
            }
        }
        ,
        t.prototype.DQ = function(t, e) {
            for (var r = [], n = 0, i = t; n < i.length; n++) {
                var o = (a = i[n]).path
                  , s = a.name || ""
                  , u = labelsUtil.aQ(s.split(""))
                  , c = a.distance || 1e5;
                a.style && a.style[1];
                var f = void 0 === (f = (a = a.style || {}).th) ? zoomRange[0] : f
                  , h = void 0 === (h = a.ih) ? zoomRange[1] : h
                  , l = a.Kr
                  , d = a.Qr
                  , v = a.rh
                  , g = a.zIndex
                  , a = a.Hr;
                s && o && o.length && r.push({
                    path: o,
                    positionType: "absolute",
                    name: s,
                    $G: [],
                    CO: u,
                    rank: g,
                    BG: void 0 === a ? "name_en" : a,
                    distance: c,
                    zooms: [f, h],
                    style: {
                        fontSize: v || 12,
                        fillColor: l,
                        strokeColor: d
                    }
                })
            }
            return r
        }
        ,
        t.prototype.fV = function(t) {
            return t = LangManager.kU(t),
            -1 !== CONSTS$1.EU.indexOf(t)
        }
        ,
        t.prototype.uV = function(t) {
            for (var e = ProjectionManager.getProjection("EPSG:3857").unproject(t[0], t[1]), r = getOutseaData("mapbox").boundsP16, n = 0; n < r.length; n++) {
                var i = r[n];
                if (geoUtil.isPointInPolygon(e, i[0]))
                    return !1
            }
            return !0
        }
        ,
        t.prototype.hV = function(t) {
            return t = [[(t = t.Ro)[0], t[1]], [t[2], t[1]], [t[2], t[3]], [t[0], t[3]]],
            this.cV(t)
        }
        ,
        t.prototype.cV = function(t) {
            for (var e = [], r = 0; r < t.length; r++) {
                var n = t[r]
                  , n = ProjectionManager.getProjection("EPSG:3857").unproject(n[0], n[1]);
                e.push(n)
            }
            for (var i = getOutseaData("mapbox").boundsP16, a = 0; a < i.length; a++) {
                var o = i[a];
                if (geoUtil.isRingInRingByMapboxB(e, o[0]))
                    return !0
            }
            return !1
        }
        ,
        t.id = "mapbox",
        t
    }(LabelFormat)
      , Color = function() {
        function t(t) {
            this.type = "AMap.Color",
            this.rgba = [],
            this.Vb(t)
        }
        var e = t;
        return t.Wb = function(t, e) {
            return {
                rgba: t.rgba
            }
        }
        ,
        t.Gb = function(t) {
            return new e(t.rgba)
        }
        ,
        t.FV = function(t, e) {
            var r = (t = this.DV(t[0], t[1], t[2], t[3]))[0]
              , n = t[1]
              , i = t[2]
              , t = t[3];
            return this.GQ(r += (.5 < r ? -.5 : .5) * e * .35, n -= (n - .5) * e * .35 * 5, i -= (i - .5) * e * .35, t)
        }
        ,
        t.DV = function(t, e, r, n) {
            var i, a, o, s = Math.max(t, e, r), u = Math.min(t, e, r), c = (s + u) / 2;
            if (s === u)
                i = a = 0;
            else {
                switch (o = s - u,
                a = .5 < c ? o / (2 - s - u) : o / (s + u),
                s) {
                case t:
                    i = (e - r) / o + (e < r ? 6 : 0);
                    break;
                case e:
                    i = (r - t) / o + 2;
                    break;
                case r:
                    i = (t - e) / o + 4
                }
                i /= 6
            }
            return [i, a, c, n]
        }
        ,
        t.uQ = function(t, e, r) {
            return r < 0 && (r += 1),
            1 < r && --r,
            r < 1 / 6 ? t + 6 * (e - t) * r : r < .5 ? e : r < 2 / 3 ? t + (e - t) * (2 / 3 - r) * 6 : t
        }
        ,
        t.GQ = function(t, e, r, n) {
            var i, a, o;
            return 0 === e ? i = a = o = r : (i = this.uQ(e = 2 * r - (r = r < .5 ? r * (1 + e) : r + e - r * e), r, t + 1 / 3),
            a = this.uQ(e, r, t),
            o = this.uQ(e, r, t - 1 / 3)),
            [i, a, o, n]
        }
        ,
        t.Hb = function(t, e) {
            void 0 === e && (e = []);
            for (var r = 0, n = t.length; r < n; r += 2)
                e[r / 2] = parseInt(t.substr(r, 2), 16);
            return e
        }
        ,
        t.Yx = function(t) {
            return t.startsWith("#") && (t = t.substr(1)),
            colorNames[t] ? e.Hb(colorNames[t].substr(1)) : 1 === t.length ? e.Hb(t + t + t + t + t + t) : 3 === t.length ? e.Hb(t[0] + t[0] + t[1] + t[1] + t[2] + t[2]) : 6 === t.length ? e.Hb(t) : [0, 0, 0]
        }
        ,
        t.normalize = function(t) {
            for (var e = [], r = 0, n = t.length; r < n; r++)
                e[r] = t[r] / 255;
            return e
        }
        ,
        t.create = function(t) {
            return t ? new e(t) : null
        }
        ,
        t.prototype.normalize = function() {
            return [this.rgba[0] / 255, this.rgba[1] / 255, this.rgba[2] / 255, this.rgba[3] / 255]
        }
        ,
        t.prototype.Vb = function(t) {
            "string" == typeof t ? colorNames[t] ? this.Hb(colorNames[t].substr(1)) : 0 !== t.length && (1 === (t = t.startsWith("#") ? t.substr(1) : t).length ? this.Hb(t + t + t + t + t + t) : 3 === t.length ? this.Hb(t[0] + t[0] + t[1] + t[1] + t[2] + t[2]) : 6 === t.length ? this.Hb(t) : 8 === t.length ? this.$b(t) : t.startsWith("rgba(") ? this.Yb(colorNames[t].substr(1)) : t.startsWith("rgb(") && this.Kb(colorNames[t].substr(1))) : t instanceof Array && (this.rgba[0] = t[0],
            this.rgba[1] = t[1],
            this.rgba[2] = t[2],
            this.rgba[3] = t[3] || 255)
        }
        ,
        t.prototype.Hb = function(t) {
            this.$b(t + "FF")
        }
        ,
        t.prototype.$b = function(t) {
            for (var e = 0, r = t.length; e < r; e += 2)
                this.rgba[e / 2] = parseInt(t.substr(e, 2), 16)
        }
        ,
        t.prototype.Kb = function(t) {
            t = t.split(","),
            this.rgba[0] = parseInt(t[0].substr(4), 10),
            this.rgba[1] = parseInt(t[1], 10),
            this.rgba[2] = parseInt(t[2], 10),
            this.rgba[3] = 255
        }
        ,
        t.prototype.Yb = function(t) {
            t = t.split(","),
            this.rgba[0] = parseInt(t[0].substr(5), 10),
            this.rgba[1] = parseInt(t[1], 10),
            this.rgba[2] = parseInt(t[2], 10),
            this.rgba[3] = 255 * parseFloat(t[3]) << 0
        }
        ,
        e = __decorate([InnerClass("Color")], t)
    }()
      , colorNames = {
        aliceblue: "#f0f8ff",
        antiquewhite: "#faebd7",
        aqua: "#00ffff",
        aquamarine: "#7fffd4",
        azure: "#f0ffff",
        beige: "#f5f5dc",
        bisque: "#ffe4c4",
        black: "#000000",
        blanchedalmond: "#ffebcd",
        blue: "#0000ff",
        blueviolet: "#8a2be2",
        brown: "#a52a2a",
        burlywood: "#deb887",
        cadetblue: "#5f9ea0",
        chartreuse: "#7fff00",
        chocolate: "#d2691e",
        coral: "#ff7f50",
        cornflowerblue: "#6495ed",
        cornsilk: "#fff8dc",
        crimson: "#dc143c",
        cyan: "#00ffff",
        darkblue: "#00008b",
        darkcyan: "#008b8b",
        darkgoldenrod: "#b8860b",
        darkgray: "#a9a9a9",
        darkgreen: "#006400",
        darkkhaki: "#bdb76b",
        darkmagenta: "#8b008b",
        darkolivegreen: "#556b2f",
        darkorange: "#ff8c00",
        darkorchid: "#9932cc",
        darkred: "#8b0000",
        darksalmon: "#e9967a",
        darkseagreen: "#8fbc8f",
        darkslateblue: "#483d8b",
        darkslategray: "#2f4f4f",
        darkturquoise: "#00ced1",
        darkviolet: "#9400d3",
        deeppink: "#ff1493",
        deepskyblue: "#00bfff",
        dimgray: "#696969",
        dodgerblue: "#1e90ff",
        firebrick: "#b22222",
        floralwhite: "#fffaf0",
        forestgreen: "#228b22",
        fuchsia: "#ff00ff",
        gainsboro: "#dcdcdc",
        ghostwhite: "#f8f8ff",
        gold: "#ffd700",
        goldenrod: "#daa520",
        gray: "#808080",
        green: "#008000",
        greenyellow: "#adff2f",
        honeydew: "#f0fff0",
        hotpink: "#ff69b4",
        indianred: "#cd5c5c",
        indigo: "#4b0082",
        ivory: "#fffff0",
        khaki: "#f0e68c",
        lavender: "#e6e6fa",
        lavenderblush: "#fff0f5",
        lawngreen: "#7cfc00",
        lemonchiffon: "#fffacd",
        lightblue: "#add8e6",
        lightcoral: "#f08080",
        lightcyan: "#e0ffff",
        lightgoldenrodyellow: "#fafad2",
        lightgrey: "#d3d3d3",
        lightgreen: "#90ee90",
        lightpink: "#ffb6c1",
        lightsalmon: "#ffa07a",
        lightseagreen: "#20b2aa",
        lightskyblue: "#87cefa",
        lightslategray: "#778899",
        lightsteelblue: "#b0c4de",
        lightyellow: "#ffffe0",
        lime: "#00ff00",
        limegreen: "#32cd32",
        linen: "#faf0e6",
        magenta: "#ff00ff",
        maroon: "#800000",
        mediumaquamarine: "#66cdaa",
        mediumblue: "#0000cd",
        mediumorchid: "#ba55d3",
        mediumpurple: "#9370d8",
        mediumseagreen: "#3cb371",
        mediumslateblue: "#7b68ee",
        mediumspringgreen: "#00fa9a",
        mediumturquoise: "#48d1cc",
        mediumvioletred: "#c71585",
        midnightblue: "#191970",
        mintcream: "#f5fffa",
        mistyrose: "#ffe4e1",
        moccasin: "#ffe4b5",
        navajowhite: "#ffdead",
        navy: "#000080",
        oldlace: "#fdf5e6",
        olive: "#808000",
        olivedrab: "#6b8e23",
        orange: "#ffa500",
        orangered: "#ff4500",
        orchid: "#da70d6",
        palegoldenrod: "#eee8aa",
        palegreen: "#98fb98",
        paleturquoise: "#afeeee",
        palevioletred: "#d87093",
        papayawhip: "#ffefd5",
        peachpuff: "#ffdab9",
        peru: "#cd853f",
        pink: "#ffc0cb",
        plum: "#dda0dd",
        powderblue: "#b0e0e6",
        purple: "#800080",
        rebeccapurple: "#663399",
        red: "#ff0000",
        rosybrown: "#bc8f8f",
        royalblue: "#4169e1",
        saddlebrown: "#8b4513",
        salmon: "#fa8072",
        sandybrown: "#f4a460",
        seagreen: "#2e8b57",
        seashell: "#fff5ee",
        sienna: "#a0522d",
        silver: "#c0c0c0",
        skyblue: "#87ceeb",
        slateblue: "#6a5acd",
        slategray: "#708090",
        snow: "#fffafa",
        springgreen: "#00ff7f",
        steelblue: "#4682b4",
        tan: "#d2b48c",
        teal: "#008080",
        thistle: "#d8bfd8",
        tomato: "#ff6347",
        turquoise: "#40e0d0",
        violet: "#ee82ee",
        wheat: "#f5deb3",
        white: "#ffffff",
        whitesmoke: "#f5f5f5",
        yellow: "#ffff00",
        yellowgreen: "#9acd32"
    }
      , NebulaLabelFormat = function(r) {
        function t(t) {
            var e = r.call(this) || this;
            return e.bt = 20,
            e.WW = 20,
            e._opts = {},
            e.uA = {},
            e.vn = t.vn,
            e
        }
        return __extends(t, r),
        t.prototype.Ns = function(t, e) {
            return e.lang && (this.lang = e.lang),
            this._opts = e,
            this.bt = e.zoom,
            this.WW = e.ZL,
            this.rV(t, e.R_)
        }
        ,
        t.prototype.rV = function(t, e) {
            var r, n, i = t.data || {}, a = i.poilabel || [], o = {}, s = t.cQ;
            for (r in a)
                a.hasOwnProperty(r) && (n = this.nV(a[r], {
                    aV: t.zo.z < 10,
                    cQ: s,
                    R_: e
                }),
                o[r] = n);
            return i = i.roadName || [],
            i = this.oV(i, {
                R_: e
            }),
            o.eA = i,
            o
        }
        ,
        t.prototype.nV = function(E, t) {
            for (var e, r, n, i, a, o, s, u, c, f, h, l, d = CONSTS.Lj, j = d.file, F = d.size, R = CONSTS.Mp, D = CONSTS.Pp, B = CONSTS.jp, G = this._opts.scale, V = (t = void 0 === t ? {} : t).aV, v = t.cQ, z = this.bt, W = [], H = this.lang, q = !v && 5 <= z, g = 0, Y = E; g < Y.length; g++) {
                var p = Y[g]
                  , y = p.cw
                  , m = p.ew
                  , b = p.pos
                  , T = (U = labelsUtil.tQ(p, H, q ? t.R_ : void 0)).name
                  , K = U.$G || []
                  , x = p.rank
                  , M = p.minzoom || R
                  , S = (V ? zoomRange[1] : p.maxzoom,
                p.Fp)
                  , A = p.Ep;
                if (3 === M && (M = 2),
                (10002 !== S || 28 !== A) && (e = this.oA(S, A, this.WW)) && (r = 1 < G || 9 < e.fontSize ? e.fontSize : 9,
                o = e.iconFile,
                s = e.showMode,
                u = e.forceShow,
                c = e.zIndex,
                p = e.zooms,
                w = labelsUtil.Jj([M, zoomRange[1]], p))) {
                    for (var w, P = (w = labelsUtil.$p(w))[0], I = [], C = {}; P <= w[1]; ) {
                        var $ = this.vn.dn(S, A, P);
                        $ && "0" !== $.iconID && (O = $.iconID,
                        -1 === I.indexOf(O) && (I.push(O),
                        C[O] = []),
                        C[O].push(P)),
                        P++
                    }
                    (10002 !== S || 20 !== A && 18 !== A) && 16 < r && (r = 15);
                    for (var N, M = [w[0] - D, w[1] + B], k = (10002 === S && (13 === A || 18 === A) && M[0] <= 3 && (M[0] = 2.5),
                    f = o && "https" + j[o],
                    p = {
                        data: {
                            id: y ? y + A : "",
                            position: b,
                            name: T,
                            txt: T,
                            rank: x,
                            BG: U.type,
                            extData: {
                                Lp: S,
                                Ap: A,
                                id: y,
                                type: "poi",
                                bz: m
                            }
                        },
                        opts: {
                            type: "billboard",
                            angle: 0,
                            forceShow: u,
                            zIndex: c,
                            visible: !0,
                            zooms: M
                        }
                    },
                    h = e.xOffset || 0,
                    l = e.yOffset || 0,
                    []), b = void 0, x = [0, 0], L = 0; L < I.length; L++) {
                        var O = I[L]
                          , X = o && this.aA(parseInt(O, 10))
                          , Z = F
                          , _ = labelsUtil.$p(C[O])
                          , J = 1;
                        !T || "152" !== O && "153" !== O && "154" !== O || (J = T.length <= 2 ? 1 : T.length / 2),
                        N = vector.Up(Z, 2),
                        f && k.push({
                            type: "image",
                            image: f,
                            clipOrigin: vector.add(X, [0, 0]),
                            clipSize: Z,
                            size: [N[0] * J, N[1]],
                            anchor: [10 - 20 * h / 24, 10 - 20 * l / 24],
                            angle: 0,
                            retina: !0,
                            zooms: [_[0] - D, _[_.length - 1] + B]
                        })
                    }
                    T && (x = "曾母暗沙" === T ? (b = "top",
                    [0, 5]) : k.length && k[0].image ? (O = I[0],
                    v && (b = "bottom",
                    x = [0, 0]),
                    "北京" === T ? (b = "top",
                    [0, 3]) : "澳门" === T ? (b = "left",
                    [0, -2]) : "合肥" === T || "太原" === T || "西安" === T || "郑州" === T || "杭州" === T || "台北" === T || "加德满都" === T ? (b = "bottom",
                    [0, -3]) : 10002 !== S || 31 !== A && 32 !== A && 34 !== A && 5 !== A ? 1 === s || "152" !== O && "153" !== O && "154" !== O ? (b = "right",
                    [0, -2]) : (b = "center",
                    [0, -1]) : (b = "right",
                    [-3, -3])) : (b = "center",
                    [h, l]));
                    var U = "" + S + A;
                    (y = this.uA[U]) ? (n = y.faceColor,
                    i = y.borderColor,
                    a = y.holoColor) : (n = e.faceColor && Color.normalize(e.faceColor.rgba),
                    i = e.borderColor && Color.normalize(e.borderColor.rgba),
                    a = 3 === e.showMode ? e.holoColor && Color.normalize(e.holoColor.rgba) : null,
                    this.uA[U] = {
                        faceColor: n,
                        borderColor: i,
                        holoColor: a
                    }),
                    m = T ? {
                        direction: b,
                        offset: x,
                        $G: K,
                        style: {
                            fontSize: r,
                            strokeWidth: 2,
                            padding: [0, 1, 0, 1],
                            fold: !v && 5 <= z
                        }
                    } : {},
                    p.opts && (p.opts.icon = k,
                    p.opts.text = m),
                    f && (this.Fs[f] = 1),
                    T && this.Ws(T, K),
                    W.push(p)
                }
            }
            return W
        }
        ,
        t.prototype.oV = function(t, e) {
            for (var r = CONSTS.Lj, n = r.file, i = r.size, a = CONSTS.Mp, o = CONSTS.Rp, s = CONSTS.Pp, u = CONSTS.jp, c = [], f = this._opts.scale, h = this.lang, l = (e = void 0 === e ? {} : e) && e.R_ && e.R_.protocol || "https", d = 0, v = t; d < v.length; d++) {
                var g, p, y = v[d], m = y.path, b = y.rank, T = y.minzoom || a, x = y.maxzoom || o, M = y.shield, S = y.shieldType, A = (y = labelsUtil.tQ(y, h)).name, w = y.$G;
                A && this.Ws(A, w),
                !M || (w = Math.floor(m.length / 2)) < 1 || (m = [m[w - 1], m[w]],
                (S = this.oA(40001, w = S, this.WW)) && (g = 1 < f || 9 < S.fontSize ? S.fontSize : 9,
                p = S.faceColor,
                S = S.iconID,
                m = {
                    data: {
                        id: Util.stamp(this),
                        position: m,
                        positionType: "relative",
                        name: A,
                        txt: M,
                        rank: b,
                        BG: y.type,
                        extData: {
                            type: "shield",
                            Lp: 40001,
                            Ap: w
                        }
                    },
                    opts: {
                        type: "billboard",
                        angle: 0,
                        zooms: [T - s, x + u],
                        visible: !0
                    }
                },
                A = this.aA(parseInt(S, 10)),
                b = 1 < M.length / 4 ? M.length / 4 : 1,
                y = {
                    type: "image",
                    image: l + n[0],
                    clipOrigin: A,
                    clipSize: i,
                    size: [24 * (1 < f ? b : 9 * b / 7), 24],
                    anchor: "center",
                    angle: 0,
                    retina: !0
                },
                w = M ? {
                    direction: "center",
                    offset: [0, 0],
                    style: {
                        fontSize: g,
                        fillColor: p && Color.normalize(p.rgba),
                        strokeWidth: 0,
                        padding: [0, 1, 0, 1]
                    }
                } : {},
                m.opts && (m.opts.text = w,
                m.opts.icon = [y]),
                M && this.Ws(M),
                c.push(m)))
            }
            return c
        }
        ,
        t.prototype.DQ = function(t, e) {
            for (var r = CONSTS.Mp, n = CONSTS.Rp, i = CONSTS.Pp, a = CONSTS.jp, o = this.WW = e.zoom, s = 0, u = [], c = this.lang, f = 0, h = t; f < h.length; f++) {
                var l, d, v, g, p, y, m, b, T, x, M, S = h[f], A = S.id, w = (l = labelsUtil.tQ(S, c)).name, P = l.$G || [];
                w && (l = l.type,
                d = labelsUtil.EQ(w, P),
                d = labelsUtil.aQ(d),
                v = S.rank,
                g = S.Fp,
                p = S.Ep,
                s = S.distance || 0,
                y = S.minzoom || r,
                m = S.maxzoom || n,
                b = (x = (x = this.vn.dn(g, p, o)) && x[1] || {}).fontSize,
                T = x.faceColor,
                x = x.borderColor,
                y = (M = labelsUtil.$p([y, m]))[0],
                m = 20 <= (m = M[1]) ? zoomRange[1] : m,
                w) && A && b && T && (M = {
                    id: A,
                    positionType: "relative",
                    name: w,
                    $G: P,
                    CO: d,
                    rank: v,
                    BG: l,
                    distance: s,
                    zooms: [y - i, m + a],
                    path: 0 < S.path.length ? S.path : void 0,
                    style: {
                        fontSize: b,
                        fillColor: vector.Up(T.rgba, 255),
                        strokeColor: x && vector.Up(x.rgba, 255)
                    },
                    extData: {
                        mainkey: g,
                        subkey: p
                    }
                },
                u.push(M))
            }
            return u
        }
        ,
        t.prototype.aA = function(t) {
            var r = (e = CONSTS.Lj).Rj
              , e = e.size
              , n = Math.floor(t / r);
            return t % 10 == 0 && --n,
            [(t - r * n - 1) * e[0], n * e[1]]
        }
        ,
        t.prototype.oA = function(t, e, r) {
            var n = [3, 20]
              , i = this.vn.dn(t, e, r)
              , a = this.vn.mn(t, e);
            if (!i)
                for (var o = 1; (n[0] <= r - o || r + o <= n[1]) && !(i = (i = this.vn.dn(t, e, r - o)) || this.vn.dn(t, e, r + o)); )
                    o++;
            return i && (i.zooms = a),
            i
        }
        ,
        t.prototype.mN = function(t, e) {
            var r = [0, 0];
            if ("0" === t)
                switch (e) {
                case "3":
                    r = [6, 6];
                    break;
                case "4":
                case "5":
                case "6":
                    r = [9, 9]
                }
            return r
        }
        ,
        t.prototype.TN = function(t, e, r) {
            var n = r = void 0 === r ? [0, 0] : r;
            if ("0" === t)
                switch (e) {
                case "3":
                    n = [30, 30];
                    break;
                case "4":
                case "5":
                case "6":
                    n = [20, 20]
                }
            return n
        }
        ,
        t.id = exports.n0.nebulaLabel,
        t
    }(LabelFormat)
      , TileCoord = (function(t) {
        t.TOLOAD = "toload",
        t.LOADING = "loading",
        t.LOADED = "loaded",
        t.UNLOADED = "unloaded",
        t.ERROR = "error",
        t.RELOADING = "reloading"
    }(exports.TileState || (exports.TileState = {})),
    function() {
        function t(t, e, r) {
            this.x = e,
            this.y = r,
            this.z = t,
            this.key = t + "," + e + "," + r
        }
        var n = t;
        return t.prototype.s0 = function(t) {
            var e = t - this.z
              , r = Math.floor(Math.pow(2, e) * this.x)
              , e = Math.floor(Math.pow(2, e) * this.y);
            return new n(t,r,e)
        }
        ,
        n = __decorate([InnerClass("TileCoord")], t)
    }())
      , Tile = function() {
        function t(t) {
            this.type = "tile",
            this.Ro = [0, 0, 0, 0],
            this.stamp = 0,
            this.zo = t,
            this.status = exports.TileState.TOLOAD,
            this._v = null,
            this.data = {}
        }
        return t.YH = function(t) {
            return t.status === exports.TileState.LOADED || t.status === exports.TileState.RELOADING
        }
        ,
        t.prototype.destroy = function() {}
        ,
        t.prototype.nG = function(t) {
            this.type = t
        }
        ,
        __decorate([InnerClass("Tile")], t)
    }()
      , NebulaTile = function(e) {
        function t() {
            var t = null !== e && e.apply(this, arguments) || this;
            return t.type = "nebula",
            t.region = "world",
            t.aN = exports.zB.NONE,
            t.BN = exports.zB.NONE,
            t
        }
        return __extends(t, e),
        Object.defineProperty(t.prototype, "tag", {
            get: function() {
                return this.nN
            },
            set: function(t) {
                this.aN = this.tag,
                this.nN = t
            },
            enumerable: !1,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "gB", {
            get: function() {
                return this.VN
            },
            set: function(t) {
                this.BN = this.gB,
                this.VN = t
            },
            enumerable: !1,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "data", {
            get: function() {
                var t = [];
                return this.qc && this.qc.Dc ? t.push(this.qc) : (this.sN && t.push(this.sN),
                this.uN && t.push(this.uN)),
                this.lU && this.lU.Dc ? t.push(this.lU) : (this.fU && t.push(this.fU),
                this.cU && t.push(this.cU)),
                this.zN && this.zN.labels ? t.push(this.zN) : (this.HN && t.push(this.HN),
                this.WN && t.push(this.WN)),
                this.dU && this.dU.labels ? t.push(this.dU) : (this.vU && t.push(this.vU),
                this.gU && t.push(this.gU)),
                t
            },
            set: function(t) {},
            enumerable: !1,
            configurable: !0
        }),
        t.prototype.xa = function(t, e) {
            if (void 0 === e && (e = exports.zB.ALL),
            Object.keys(t))
                switch (e) {
                case exports.zB.LITE:
                    this.uN = exports.Ln(exports.Ln({}, this.uN), t);
                    break;
                case exports.zB.LEFT:
                    this.sN = exports.Ln(exports.Ln({}, this.sN), t);
                    break;
                default:
                    exports.zB.ALL,
                    this.qc = exports.Ln(exports.Ln({}, this.qc), t)
                }
        }
        ,
        t.prototype.JE = function(t, e) {
            if (void 0 === e && (e = exports.zB.ALL),
            Object.keys(t))
                switch (e) {
                case exports.zB.LITE:
                    this.cU = exports.Ln(exports.Ln({}, this.cU), t);
                    break;
                case exports.zB.LEFT:
                    this.fU = exports.Ln(exports.Ln({}, this.fU), t);
                    break;
                default:
                    exports.zB.ALL,
                    this.lU = exports.Ln(exports.Ln({}, this.lU), t)
                }
        }
        ,
        t.prototype.rO = function(t, e) {
            if (void 0 === e && (e = exports.zB.ALL),
            Object.keys(t))
                switch (e) {
                case exports.zB.LITE:
                    this.WN = exports.Ln(exports.Ln({}, this.WN), t);
                    break;
                case exports.zB.LEFT:
                    this.HN = exports.Ln(exports.Ln({}, this.HN), t);
                    break;
                default:
                    exports.zB.ALL,
                    this.zN = exports.Ln(exports.Ln({}, this.zN), t)
                }
        }
        ,
        t.prototype.qE = function(t, e) {
            if (void 0 === e && (e = exports.zB.ALL),
            Object.keys(t))
                switch (e) {
                case exports.zB.LITE:
                    this.gU = exports.Ln(exports.Ln({}, this.gU), t);
                    break;
                case exports.zB.LEFT:
                    this.vU = exports.Ln(exports.Ln({}, this.vU), t);
                    break;
                default:
                    exports.zB.ALL,
                    this.dU = exports.Ln(exports.Ln({}, this.dU), t)
                }
        }
        ,
        t.prototype.ID = function(t) {
            t && (t.uN && (this.uN = t.uN),
            t.sN && (this.sN = t.sN),
            t.qc && (this.qc = t.qc),
            t.WN && (this.WN = t.WN),
            t.HN && (this.HN = t.HN),
            t.zN) && (this.zN = t.zN)
        }
        ,
        t.prototype.rN = function() {
            this.aN ? this.nN = this.aN : this.nN = exports.zB.NONE,
            this.BN && (this.VN = this.BN,
            this.nN = exports.zB.NONE)
        }
        ,
        t.prototype.AB = function() {
            var t = [];
            return this.qc && this.qc.road && this.zN && this.zN.labels ? t.push(this.qc) : (this.sN && this.sN.road && this.HN && this.HN.labels && t.push(this.sN),
            this.uN && this.uN.road && this.WN && this.WN.labels && t.push(this.uN)),
            t
        }
        ,
        t.prototype.LY = function(t, e) {
            for (var r = 0, n = this.data; r < n.length; r++) {
                var i = n[r];
                i.Dc && i.Dc.upload(t, !0),
                i.$c && i.$c.upload(t, !0),
                i.A_ && i.A_.upload(t, !0),
                i.FD && i.FD.upload(t, !0)
            }
        }
        ,
        t.prototype.destroy = function() {
            var t = this.data;
            if (t)
                for (var e = 0, r = t; e < r.length; e++) {
                    var n = r[e];
                    if (n.Dc && (n.Dc.destroy(),
                    delete n.Dc),
                    n.$c && (n.$c.destroy(),
                    delete n.$c),
                    n.labels) {
                        for (var i = 0, a = n.labels; i < a.length; i++)
                            a[i].destroy();
                        delete n.labels
                    }
                    n.Ta = !1,
                    delete n.gf
                }
        }
        ,
        t.prototype.KE = function(t) {
            for (var e, r = this.data, n = [], i = 0, a = t; i < a.length; i++)
                (o = a[i]).road && n.push(o.road);
            for (var o, s = 0, u = r; s < u.length; s++)
                (o = u[s]).XE && (e = o.XE,
                this.pU(n, e))
        }
        ,
        t.prototype.reload = function() {
            delete this.lU,
            delete this.cU,
            delete this.fU,
            delete this.zN,
            delete this.WN,
            delete this.HN,
            delete this.VN,
            this.BN = exports.zB.NONE
        }
        ,
        t.prototype.pU = function(t, e) {
            for (var r = 0, n = e; r < n.length; r++) {
                var i = n[r]
                  , a = i.id;
                if (i.path)
                    break;
                for (var o = 0, s = t; o < s.length; o++) {
                    var u = s[o];
                    i.path = this.yU(u, a)
                }
            }
        }
        ,
        t.prototype.yU = function(t, e) {
            for (var r = 0, n = t; r < n.length; r++) {
                var i = n[r];
                if (i.id === e)
                    return i.path
            }
        }
        ,
        t.prototype.oN = function() {
            var t = this.qc;
            return !!(t = Object.keys(t || {})).length && (1 !== t.length || "sdfLoaded" !== t[0])
        }
        ,
        __decorate([InnerClass("NebulaTile")], t)
    }(Tile)
      , RasterTile = function(e) {
        function t() {
            var t = null !== e && e.apply(this, arguments) || this;
            return t.type = "raster",
            t
        }
        return __extends(t, e),
        t.prototype.destroy = function() {
            var t = this.data;
            t && (t.texture && (t.texture.destroy(),
            delete t.texture),
            t.zs && (t.zs.context.deleteBuffer(t.zs),
            delete t.zs),
            t.Js) && (t.Js.destroy(),
            delete t.Js)
        }
        ,
        t
    }(Tile)
      , VectorTile = function(e) {
        function t() {
            var t = null !== e && e.apply(this, arguments) || this;
            return t.type = "vector",
            t
        }
        return __extends(t, e),
        t.prototype.destroy = function() {
            var t = this.data;
            t && (t.$c && (t.$c.destroy(),
            delete t.$c),
            t.Uc) && delete t.Uc
        }
        ,
        __decorate([InnerClass("VectorTile")], t)
    }(Tile);
    function quickselect(t, e, r, n, i) {
        quickselectStep(t, e, r || 0, n || t.length - 1, i || defaultCompare)
    }
    function quickselectStep(t, e, r, n, i) {
        for (; r < n; ) {
            600 < n - r && (a = n - r + 1,
            o = e - r + 1,
            u = Math.log(a),
            s = .5 * Math.exp(2 * u / 3),
            u = .5 * Math.sqrt(u * s * (a - s) / a) * (o - a / 2 < 0 ? -1 : 1),
            quickselectStep(t, e, Math.max(r, Math.floor(e - o * s / a + u)), Math.min(n, Math.floor(e + (a - o) * s / a + u)), i));
            var a, o, s, u, c = t[e], f = r, h = n;
            for (swap(t, r, e),
            0 < i(t[n], c) && swap(t, r, n); f < h; ) {
                for (swap(t, f, h),
                f++,
                h--; i(t[f], c) < 0; )
                    f++;
                for (; 0 < i(t[h], c); )
                    h--
            }
            0 === i(t[r], c) ? swap(t, r, h) : swap(t, ++h, n),
            h <= e && (r = h + 1),
            e <= h && (n = h - 1)
        }
    }
    function swap(t, e, r) {
        var n = t[e];
        t[e] = t[r],
        t[r] = n
    }
    function defaultCompare(t, e) {
        return t < e ? -1 : e < t ? 1 : 0
    }
    var rbush_1 = rbush, default_1 = rbush, Status, M;
    function rbush(t, e) {
        if (!(this instanceof rbush))
            return new rbush(t,e);
        this.Bc = Math.max(4, t || 9),
        this.Wc = Math.max(2, Math.ceil(.4 * this.Bc)),
        e && this.Gc(e),
        this.clear()
    }
    function findItem(t, e, r) {
        if (!r)
            return e.indexOf(t);
        for (var n = 0; n < e.length; n++)
            if (r(t, e[n]))
                return n;
        return -1
    }
    function calcBBox(t, e) {
        distBBox(t, 0, t.children.length, e, t)
    }
    function distBBox(t, e, r, n, i) {
        (i = i || createNode(null)).ja = 1 / 0,
        i.Fa = 1 / 0,
        i.Oa = -1 / 0,
        i.Ea = -1 / 0;
        for (var a, o = e; o < r; o++)
            a = t.children[o],
            extend$1(i, t.Zc ? n(a) : a);
        return i
    }
    function extend$1(t, e) {
        t.ja = Math.min(t.ja, e.ja),
        t.Fa = Math.min(t.Fa, e.Fa),
        t.Oa = Math.max(t.Oa, e.Oa),
        t.Ea = Math.max(t.Ea, e.Ea)
    }
    function compareNodeMinX(t, e) {
        return t.ja - e.ja
    }
    function compareNodeMinY(t, e) {
        return t.Fa - e.Fa
    }
    function bboxArea(t) {
        return (t.Oa - t.ja) * (t.Ea - t.Fa)
    }
    function bboxMargin(t) {
        return t.Oa - t.ja + (t.Ea - t.Fa)
    }
    function enlargedArea(t, e) {
        return (Math.max(e.Oa, t.Oa) - Math.min(e.ja, t.ja)) * (Math.max(e.Ea, t.Ea) - Math.min(e.Fa, t.Fa))
    }
    function intersectionArea(t, e) {
        var r = Math.max(t.ja, e.ja)
          , n = Math.max(t.Fa, e.Fa)
          , i = Math.min(t.Oa, e.Oa)
          , t = Math.min(t.Ea, e.Ea);
        return Math.max(0, i - r) * Math.max(0, t - n)
    }
    function contains(t, e) {
        return t.ja <= e.ja && t.Fa <= e.Fa && e.Oa <= t.Oa && e.Ea <= t.Ea
    }
    function intersects(t, e) {
        return e.ja <= t.Oa && e.Fa <= t.Ea && e.Oa >= t.ja && e.Ea >= t.Fa
    }
    function createNode(t) {
        return {
            children: t,
            height: 1,
            Zc: !0,
            ja: 1 / 0,
            Fa: 1 / 0,
            Oa: -1 / 0,
            Ea: -1 / 0
        }
    }
    function multiSelect(t, e, r, n, i) {
        for (var a, o = [e, r]; o.length; )
            (r = o.pop()) - (e = o.pop()) <= n || (quickselect(t, a = e + Math.ceil((r - e) / n / 2) * n, e, r, i),
            o.push(e, a, a, r))
    }
    function getModule() {
        return M = M || {
            nS: function(clsName, clsText) {
                try {
                    eval(clsText)
                } catch (e) {
                    throw e
                }
            },
            eS: {
                iS: "1675771500592",
                BY: !Browser.DW && config[13]
            }
        },
        M
    }
    rbush.prototype = {
        all: function() {
            return this.qc(this.data, [])
        },
        search: function(t) {
            var e = this.data
              , r = []
              , n = this.Yc;
            if (intersects(t, e))
                for (var i, a, o, s, u = []; e; ) {
                    for (i = 0,
                    a = e.children.length; i < a; i++)
                        o = e.children[i],
                        intersects(t, s = e.Zc ? n(o) : o) && (e.Zc ? r.push(o) : contains(t, s) ? this.qc(o, r) : u.push(o));
                    e = u.pop()
                }
            return r
        },
        Vc: function(t) {
            var e = this.data
              , r = this.Yc;
            if (intersects(t, e))
                for (var n, i, a, o, s = []; e; ) {
                    for (n = 0,
                    i = e.children.length; n < i; n++)
                        if (a = e.children[n],
                        intersects(t, o = e.Zc ? r(a) : a)) {
                            if (e.Zc || contains(t, o))
                                return !0;
                            s.push(a)
                        }
                    e = s.pop()
                }
            return !1
        },
        load: function(t) {
            if (t && t.length)
                if (t.length < this.Wc)
                    for (var e = 0, r = t.length; e < r; e++)
                        this.Xc(t[e]);
                else {
                    var n, i = this.Hc(t.slice(), 0, t.length - 1, 0);
                    this.data.children.length ? this.data.height === i.height ? this.Jc(this.data, i) : (this.data.height < i.height && (n = this.data,
                    this.data = i,
                    i = n),
                    this.Kc(i, this.data.height - i.height - 1, !0)) : this.data = i
                }
            return this
        },
        Xc: function(t) {
            return t && this.Kc(t, this.data.height - 1),
            this
        },
        clear: function() {
            return this.data = createNode([]),
            this
        },
        remove: function(t, e) {
            if (t)
                for (var r, n, i, a, o = this.data, s = this.Yc(t), u = [], c = []; o || u.length; ) {
                    if (o || (o = u.pop(),
                    n = u[u.length - 1],
                    r = c.pop(),
                    a = !0),
                    o.Zc && -1 !== (i = findItem(t, o.children, e)))
                        return o.children.splice(i, 1),
                        u.push(o),
                        this.Qc(u),
                        this;
                    a || o.Zc || !contains(o, s) ? n ? (r++,
                    o = n.children[r],
                    a = !1) : o = null : (u.push(o),
                    c.push(r),
                    o = (n = o).children[r = 0])
                }
            return this
        },
        Yc: function(t) {
            return t
        },
        tf: compareNodeMinX,
        if: compareNodeMinY,
        toJSON: function() {
            return this.data
        },
        ef: function(t) {
            return this.data = t,
            this
        },
        qc: function(t, e) {
            for (var r = []; t; )
                t.Zc ? e.push.apply(e, t.children) : r.push.apply(r, t.children),
                t = r.pop();
            return e
        },
        Hc: function(t, e, r, n) {
            var i, a = r - e + 1, o = this.Bc;
            if (a <= o)
                calcBBox(i = createNode(t.slice(e, r + 1)), this.Yc);
            else {
                n || (n = Math.ceil(Math.log(a) / Math.log(o)),
                o = Math.ceil(a / Math.pow(o, n - 1))),
                (i = createNode([])).Zc = !1,
                i.height = n;
                var s, u, c, f, h = Math.ceil(a / o), l = h * Math.ceil(Math.sqrt(o));
                for (multiSelect(t, e, r, l, this.tf),
                s = e; s <= r; s += l)
                    for (multiSelect(t, s, c = Math.min(s + l - 1, r), h, this.if),
                    u = s; u <= c; u += h)
                        f = Math.min(u + h - 1, c),
                        i.children.push(this.Hc(t, u, f, n - 1));
                calcBBox(i, this.Yc)
            }
            return i
        },
        nf: function(t, e, r, n) {
            for (var i, a, o, s, u, c, f, h; n.push(e),
            !e.Zc && n.length - 1 !== r; ) {
                for (f = h = 1 / 0,
                i = 0,
                a = e.children.length; i < a; i++)
                    u = bboxArea(o = e.children[i]),
                    (c = enlargedArea(t, o) - u) < h ? (h = c,
                    f = u < f ? u : f,
                    s = o) : c === h && u < f && (f = u,
                    s = o);
                e = s || e.children[0]
            }
            return e
        },
        Kc: function(t, e, r) {
            var n = this.Yc
              , r = r ? t : n(t)
              , i = [];
            for ((n = this.nf(r, this.data, e, i)).children.push(t),
            extend$1(n, r); 0 <= e && i[e].children.length > this.Bc; )
                this.af(i, e),
                e--;
            this.sf(r, i, e)
        },
        af: function(t, e) {
            var r = t[e]
              , n = r.children.length
              , i = this.Wc
              , i = (this.rf(r, i, n),
            this.hf(r, i, n));
            (n = createNode(r.children.splice(i, r.children.length - i))).height = r.height,
            n.Zc = r.Zc,
            calcBBox(r, this.Yc),
            calcBBox(n, this.Yc),
            e ? t[e - 1].children.push(n) : this.Jc(r, n)
        },
        Jc: function(t, e) {
            this.data = createNode([t, e]),
            this.data.height = t.height + 1,
            this.data.Zc = !1,
            calcBBox(this.data, this.Yc)
        },
        hf: function(t, e, r) {
            for (var n, i, a, o, s, u = o = 1 / 0, c = e; c <= r - e; c++)
                i = intersectionArea(a = distBBox(t, 0, c, this.Yc), n = distBBox(t, c, r, this.Yc)),
                a = bboxArea(a) + bboxArea(n),
                i < u ? (u = i,
                s = c,
                o = a < o ? a : o) : i === u && a < o && (o = a,
                s = c);
            return s
        },
        rf: function(t, e, r) {
            var n = t.Zc ? this.tf : compareNodeMinX
              , i = t.Zc ? this.if : compareNodeMinY;
            this.lf(t, e, r, n) < this.lf(t, e, r, i) && t.children.sort(n)
        },
        lf: function(t, e, r, n) {
            t.children.sort(n);
            for (var i, a = this.Yc, o = distBBox(t, 0, e, a), s = distBBox(t, r - e, r, a), u = bboxMargin(o) + bboxMargin(s), c = e; c < r - e; c++)
                i = t.children[c],
                extend$1(o, t.Zc ? a(i) : i),
                u += bboxMargin(o);
            for (c = r - e - 1; e <= c; c--)
                i = t.children[c],
                extend$1(s, t.Zc ? a(i) : i),
                u += bboxMargin(s);
            return u
        },
        sf: function(t, e, r) {
            for (var n = r; 0 <= n; n--)
                extend$1(e[n], t)
        },
        Qc: function(t) {
            for (var e, r = t.length - 1; 0 <= r; r--)
                0 === t[r].children.length ? 0 < r ? (e = t[r - 1].children).splice(e.indexOf(t[r]), 1) : this.clear() : calcBBox(t[r], this.Yc)
        },
        Gc: function(t) {
            var e = ["return a", " - b", ";"];
            this.tf = new Function("a","b",e.join(t[0])),
            this.if = new Function("a","b",e.join(t[1])),
            this.Yc = new Function("a","return {minX: a" + t[0] + ", minY: a" + t[1] + ", maxX: a" + t[2] + ", maxY: a" + t[3] + "};")
        }
    },
    rbush_1.default = default_1,
    function(t) {
        t.loading = "loading",
        t.loaded = "loaded"
    }(Status = Status || {});
    var M = getModule()
      , Queue = function() {
        function t() {
            this.tT = {}
        }
        return t.prototype.add = function(t, e) {
            for (var r = t.length, n = 0, i = function() {
                (n += 1) === r && e && e()
            }, a = 0, o = t; a < o.length; a++) {
                var s = o[a];
                this._add(s, i)
            }
        }
        ,
        t.prototype.has = function(t) {
            return (t = this.tT[t]) && t.status === Status.loaded
        }
        ,
        t.prototype.finish = function(t) {
            if (t = this.tT[t]) {
                t.status = Status.loaded;
                for (var e = 0, r = t.pI; e < r.length; e++) {
                    var n = r[e];
                    n && n()
                }
            }
        }
        ,
        t.prototype._add = function(t, e) {
            var r = this.tT[t];
            r ? r.status === Status.loading ? r.pI.push(e) : e() : this.tT[t] = {
                pI: [e],
                status: Status.loading
            }
        }
        ,
        t
    }()
      , Module = getModule();
    function InnerClass(e) {
        return function(t) {
            getModule()[e] = t
        }
    }
    getModule().MapboxLabelFormat = MapboxLabelFormat,
    getModule().NebulaLabelFormat = NebulaLabelFormat,
    getModule()._LocalZoom = {
        Ra: 13,
        za: 12,
        Ge: ""
    },
    getModule().Support = Browser,
    getModule().geo = {
        lcs: lcs,
        ProjectionManager: ProjectionManager
    },
    getModule().transform = transform,
    getModule().Util = Util,
    getModule().TileState = exports.TileState,
    getModule().assign = assign,
    getModule().labelsUtil = labelsUtil,
    getModule().LabelsRenderUtil = LabelsRenderUtil,
    getModule().vector = vector,
    getModule().rbush = rbush_1,
    getModule().lodash = {
        map: map,
        find: find,
        assign: assign,
        every: every,
        some: some
    };
    var isSupportFloat32Array = "undefined" != typeof Float32Array
      , EPSILON = (isSupportFloat32Array || (window.Float32Array = void 0,
    setMatrixArrayType(Array)),
    1e-6)
      , ARRAY_TYPE = "undefined" != typeof Float32Array ? Float32Array : Array;
    function setMatrixArrayType(t) {
        ARRAY_TYPE = t
    }
    function fromValues(t, e, r, n) {
        var i = new ARRAY_TYPE(4);
        return i[0] = t,
        i[1] = e,
        i[2] = r,
        i[3] = n,
        i
    }
    function create() {
        var t = new ARRAY_TYPE(16);
        return ARRAY_TYPE != Float32Array && (t[1] = 0,
        t[2] = 0,
        t[3] = 0,
        t[4] = 0,
        t[6] = 0,
        t[7] = 0,
        t[8] = 0,
        t[9] = 0,
        t[11] = 0,
        t[12] = 0,
        t[13] = 0,
        t[14] = 0),
        t[0] = 1,
        t[5] = 1,
        t[10] = 1,
        t[15] = 1,
        t
    }
    function identity$1(t) {
        return t[0] = 1,
        t[1] = 0,
        t[2] = 0,
        t[3] = 0,
        t[4] = 0,
        t[5] = 1,
        t[6] = 0,
        t[7] = 0,
        t[8] = 0,
        t[9] = 0,
        t[10] = 1,
        t[11] = 0,
        t[12] = 0,
        t[13] = 0,
        t[14] = 0,
        t[15] = 1,
        t
    }
    function invert(t, e) {
        var r = e[0]
          , n = e[1]
          , i = e[2]
          , a = e[3]
          , o = e[4]
          , s = e[5]
          , u = e[6]
          , c = e[7]
          , f = e[8]
          , h = e[9]
          , l = e[10]
          , d = e[11]
          , v = e[12]
          , g = e[13]
          , p = e[14]
          , y = r * s - n * o
          , m = r * u - i * o
          , b = r * c - a * o
          , T = n * u - i * s
          , x = n * c - a * s
          , M = i * c - a * u
          , S = f * g - h * v
          , A = f * p - l * v
          , w = f * (e = e[15]) - d * v
          , P = h * p - l * g
          , I = h * e - d * g
          , C = l * e - d * p
          , $ = y * C - m * I + b * P + T * w - x * A + M * S;
        return $ ? (t[0] = (s * C - u * I + c * P) * ($ = 1 / $),
        t[1] = (i * I - n * C - a * P) * $,
        t[2] = (g * M - p * x + e * T) * $,
        t[3] = (l * x - h * M - d * T) * $,
        t[4] = (u * w - o * C - c * A) * $,
        t[5] = (r * C - i * w + a * A) * $,
        t[6] = (p * b - v * M - e * m) * $,
        t[7] = (f * M - l * b + d * m) * $,
        t[8] = (o * I - s * w + c * S) * $,
        t[9] = (n * w - r * I - a * S) * $,
        t[10] = (v * x - g * b + e * y) * $,
        t[11] = (h * b - f * x - d * y) * $,
        t[12] = (s * A - o * P - u * S) * $,
        t[13] = (r * P - n * A + i * S) * $,
        t[14] = (g * m - v * T - p * y) * $,
        t[15] = (f * T - h * m + l * y) * $,
        t) : null
    }
    function multiply(t, e, r) {
        var n = e[0]
          , i = e[1]
          , a = e[2]
          , o = e[3]
          , s = e[4]
          , u = e[5]
          , c = e[6]
          , f = e[7]
          , h = e[8]
          , l = e[9]
          , d = e[10]
          , v = e[11]
          , g = e[12]
          , p = e[13]
          , y = e[14]
          , e = e[15]
          , m = r[0]
          , b = r[1]
          , T = r[2]
          , x = r[3];
        return t[0] = m * n + b * s + T * h + x * g,
        t[1] = m * i + b * u + T * l + x * p,
        t[2] = m * a + b * c + T * d + x * y,
        t[3] = m * o + b * f + T * v + x * e,
        m = r[4],
        b = r[5],
        T = r[6],
        x = r[7],
        t[4] = m * n + b * s + T * h + x * g,
        t[5] = m * i + b * u + T * l + x * p,
        t[6] = m * a + b * c + T * d + x * y,
        t[7] = m * o + b * f + T * v + x * e,
        m = r[8],
        b = r[9],
        T = r[10],
        x = r[11],
        t[8] = m * n + b * s + T * h + x * g,
        t[9] = m * i + b * u + T * l + x * p,
        t[10] = m * a + b * c + T * d + x * y,
        t[11] = m * o + b * f + T * v + x * e,
        m = r[12],
        b = r[13],
        T = r[14],
        x = r[15],
        t[12] = m * n + b * s + T * h + x * g,
        t[13] = m * i + b * u + T * l + x * p,
        t[14] = m * a + b * c + T * d + x * y,
        t[15] = m * o + b * f + T * v + x * e,
        t
    }
    function getTranslation(t, e) {
        return t[0] = e[12],
        t[1] = e[13],
        t[2] = e[14],
        t
    }
    function perspective(t, e, r, n, i) {
        return e = 1 / Math.tan(e / 2),
        t[0] = e / r,
        t[1] = 0,
        t[2] = 0,
        t[3] = 0,
        t[4] = 0,
        t[5] = e,
        t[6] = 0,
        t[7] = 0,
        t[8] = 0,
        t[9] = 0,
        t[11] = -1,
        t[12] = 0,
        t[13] = 0,
        t[15] = 0,
        null != i && i !== 1 / 0 ? (t[10] = (i + n) * (r = 1 / (n - i)),
        t[14] = 2 * i * n * r) : (t[10] = -1,
        t[14] = -2 * n),
        t
    }
    function ortho(t, e, r, n, i, a, o) {
        var s = 1 / (e - r)
          , u = 1 / (n - i)
          , c = 1 / (a - o);
        return t[0] = -2 * s,
        t[1] = 0,
        t[2] = 0,
        t[3] = 0,
        t[4] = 0,
        t[5] = -2 * u,
        t[6] = 0,
        t[7] = 0,
        t[8] = 0,
        t[9] = 0,
        t[10] = 2 * c,
        t[11] = 0,
        t[12] = (e + r) * s,
        t[13] = (i + n) * u,
        t[14] = (o + a) * c,
        t[15] = 1,
        t
    }
    function lookAt(t, e, r, n) {
        var i, a, o, s, u = e[0], c = e[1], e = e[2], f = n[0], h = n[1], n = n[2], l = r[0], d = r[1], r = r[2];
        return Math.abs(u - l) < EPSILON && Math.abs(c - d) < EPSILON && Math.abs(e - r) < EPSILON ? identity$1(t) : (l = u - l,
        d = c - d,
        r = e - r,
        i = h * (r *= s = 1 / Math.hypot(l, d, r)) - n * (d *= s),
        n = n * (l *= s) - f * r,
        f = f * d - h * l,
        (s = Math.hypot(i, n, f)) ? (i *= s = 1 / s,
        n *= s,
        f *= s) : f = n = i = 0,
        h = d * f - r * n,
        a = r * i - l * f,
        o = l * n - d * i,
        (s = Math.hypot(h, a, o)) ? (h *= s = 1 / s,
        a *= s,
        o *= s) : o = a = h = 0,
        t[0] = i,
        t[1] = h,
        t[2] = l,
        t[3] = 0,
        t[4] = n,
        t[5] = a,
        t[6] = d,
        t[7] = 0,
        t[8] = f,
        t[9] = o,
        t[10] = r,
        t[11] = 0,
        t[12] = -(i * u + n * c + f * e),
        t[13] = -(h * u + a * c + o * e),
        t[14] = -(l * u + d * c + r * e),
        t[15] = 1,
        t)
    }
    function equals(t, e) {
        var r = t[0]
          , n = t[1]
          , i = t[2]
          , a = t[3]
          , o = t[4]
          , s = t[5]
          , u = t[6]
          , c = t[7]
          , f = t[8]
          , h = t[9]
          , l = t[10]
          , d = t[11]
          , v = t[12]
          , g = t[13]
          , p = t[14]
          , t = t[15]
          , y = e[0]
          , m = e[1]
          , b = e[2]
          , T = e[3]
          , x = e[4]
          , M = e[5]
          , S = e[6]
          , A = e[7]
          , w = e[8]
          , P = e[9]
          , I = e[10]
          , C = e[11]
          , $ = e[12]
          , N = e[13]
          , k = e[14]
          , e = e[15];
        return Math.abs(r - y) <= EPSILON * Math.max(1, Math.abs(r), Math.abs(y)) && Math.abs(n - m) <= EPSILON * Math.max(1, Math.abs(n), Math.abs(m)) && Math.abs(i - b) <= EPSILON * Math.max(1, Math.abs(i), Math.abs(b)) && Math.abs(a - T) <= EPSILON * Math.max(1, Math.abs(a), Math.abs(T)) && Math.abs(o - x) <= EPSILON * Math.max(1, Math.abs(o), Math.abs(x)) && Math.abs(s - M) <= EPSILON * Math.max(1, Math.abs(s), Math.abs(M)) && Math.abs(u - S) <= EPSILON * Math.max(1, Math.abs(u), Math.abs(S)) && Math.abs(c - A) <= EPSILON * Math.max(1, Math.abs(c), Math.abs(A)) && Math.abs(f - w) <= EPSILON * Math.max(1, Math.abs(f), Math.abs(w)) && Math.abs(h - P) <= EPSILON * Math.max(1, Math.abs(h), Math.abs(P)) && Math.abs(l - I) <= EPSILON * Math.max(1, Math.abs(l), Math.abs(I)) && Math.abs(d - C) <= EPSILON * Math.max(1, Math.abs(d), Math.abs(C)) && Math.abs(v - $) <= EPSILON * Math.max(1, Math.abs(v), Math.abs($)) && Math.abs(g - N) <= EPSILON * Math.max(1, Math.abs(g), Math.abs(N)) && Math.abs(p - k) <= EPSILON * Math.max(1, Math.abs(p), Math.abs(k)) && Math.abs(t - e) <= EPSILON * Math.max(1, Math.abs(t), Math.abs(e))
    }
    function create$1() {
        var t = new ARRAY_TYPE(3);
        return ARRAY_TYPE != Float32Array && (t[0] = 0,
        t[1] = 0,
        t[2] = 0),
        t
    }
    function fromValues$1(t, e, r) {
        var n = new ARRAY_TYPE(3);
        return n[0] = t,
        n[1] = e,
        n[2] = r,
        n
    }
    function copy(t, e) {
        t[0] = e[0],
        t[1] = e[1],
        t[2] = e[2]
    }
    function set(t, e, r, n) {
        return t[0] = e,
        t[1] = r,
        t[2] = n,
        t
    }
    function subtract(t, e, r) {
        return t[0] = e[0] - r[0],
        t[1] = e[1] - r[1],
        t[2] = e[2] - r[2],
        t
    }
    function cross(t, e, r) {
        var n = e[0]
          , i = e[1]
          , e = e[2]
          , a = r[0]
          , o = r[1]
          , r = r[2];
        t[0] = i * r - e * o,
        t[1] = e * a - n * r,
        t[2] = n * o - i * a
    }
    Math.hypot || (Math.hypot = function() {
        for (var t = 0, e = arguments.length; e--; )
            t += arguments[e] * arguments[e];
        return Math.sqrt(t)
    }
    );
    var sub = subtract
      , forEach$1 = function() {
        var u = create$1();
        return function(t, e, r, n, i, a) {
            var o, s;
            for (e = e || 3,
            r = r || 0,
            s = n ? Math.min(n * e + r, t.length) : t.length,
            o = r; o < s; o += e)
                u[0] = t[o],
                u[1] = t[o + 1],
                u[2] = t[o + 2],
                i(u, u, a),
                t[o] = u[0],
                t[o + 1] = u[1],
                t[o + 2] = u[2];
            return t
        }
    }();
    function create$2() {
        var t = new ARRAY_TYPE(4);
        return ARRAY_TYPE != Float32Array && (t[0] = 0,
        t[1] = 0,
        t[2] = 0,
        t[3] = 0),
        t
    }
    function fromValues$2(t, e, r, n) {
        var i = new ARRAY_TYPE(4);
        return i[0] = t,
        i[1] = e,
        i[2] = r,
        i[3] = n,
        i
    }
    function scale$1(t, e, r) {
        return t[0] = e[0] * r,
        t[1] = e[1] * r,
        t[2] = e[2] * r,
        t[3] = e[3] * r,
        t
    }
    function transformMat4(t, e, r) {
        var n = e[0]
          , i = e[1]
          , a = e[2]
          , e = e[3];
        return t[0] = r[0] * n + r[4] * i + r[8] * a + r[12] * e,
        t[1] = r[1] * n + r[5] * i + r[9] * a + r[13] * e,
        t[2] = r[2] * n + r[6] * i + r[10] * a + r[14] * e,
        t[3] = r[3] * n + r[7] * i + r[11] * a + r[15] * e,
        t
    }
    var forEach$2 = function() {
        var u = create$2();
        return function(t, e, r, n, i, a) {
            var o, s;
            for (e = e || 4,
            r = r || 0,
            s = n ? Math.min(n * e + r, t.length) : t.length,
            o = r; o < s; o += e)
                u[0] = t[o],
                u[1] = t[o + 1],
                u[2] = t[o + 2],
                u[3] = t[o + 3],
                i(u, u, a),
                t[o] = u[0],
                t[o + 1] = u[1],
                t[o + 2] = u[2],
                t[o + 3] = u[3];
            return t
        }
    }();
    function create$3() {
        var t = new ARRAY_TYPE(2);
        return ARRAY_TYPE != Float32Array && (t[0] = 0,
        t[1] = 0),
        t
    }
    function clone$1(t) {
        var e = new ARRAY_TYPE(2);
        return e[0] = t[0],
        e[1] = t[1],
        e
    }
    function fromValues$3(t, e) {
        var r = new ARRAY_TYPE(2);
        return r[0] = t,
        r[1] = e,
        r
    }
    function copy$1(t, e) {
        t[0] = e[0],
        t[1] = e[1]
    }
    function set$1(t, e, r) {
        return t[0] = e,
        t[1] = r,
        t
    }
    function add(t, e, r) {
        t[0] = e[0] + r[0],
        t[1] = e[1] + r[1]
    }
    function subtract$1(t, e, r) {
        return t[0] = e[0] - r[0],
        t[1] = e[1] - r[1],
        t
    }
    function multiply$1(t, e, r) {
        return t[0] = e[0] * r[0],
        t[1] = e[1] * r[1],
        t
    }
    function scale$2(t, e, r) {
        t[0] = e[0] * r,
        t[1] = e[1] * r
    }
    function distance(t, e) {
        var r = e[0] - t[0]
          , e = e[1] - t[1];
        return Math.hypot(r, e)
    }
    function negate(t, e) {
        t[0] = -e[0],
        t[1] = -e[1]
    }
    function normalize(t, e) {
        var r = e[0]
          , n = e[1];
        0 < (r = r * r + n * n) && (r = 1 / Math.sqrt(r)),
        t[0] = e[0] * r,
        t[1] = e[1] * r
    }
    function dot(t, e) {
        return t[0] * e[0] + t[1] * e[1]
    }
    function cross$1(t, e, r) {
        e = e[0] * r[1] - e[1] * r[0],
        t[0] = t[1] = 0,
        t[2] = e
    }
    function transformMat2(t, e, r) {
        var n = e[0]
          , e = e[1];
        t[0] = r[0] * n + r[2] * e,
        t[1] = r[1] * n + r[3] * e
    }
    function rotate(t, e, r, n) {
        var i = e[0] - r[0]
          , e = e[1] - r[1]
          , a = Math.sin(n)
          , n = Math.cos(n);
        t[0] = i * n - e * a + r[0],
        t[1] = i * a + e * n + r[1]
    }
    function angle(t, e) {
        var r = t[0]
          , t = t[1]
          , n = e[0]
          , i = r * r + t * t
          , a = n * n + (e = e[1]) * e;
        return 1 < (r = (r * n + t * e) * (0 < i ? 1 / Math.sqrt(i) : i) * (0 < a ? 1 / Math.sqrt(a) : a)) ? 0 : r < -1 ? Math.PI : Math.acos(r)
    }
    function equals$1(t, e) {
        var r = t[0]
          , t = t[1]
          , n = e[0]
          , e = e[1];
        return Math.abs(r - n) <= EPSILON * Math.max(1, Math.abs(r), Math.abs(n)) && Math.abs(t - e) <= EPSILON * Math.max(1, Math.abs(t), Math.abs(e))
    }
    var sub$1 = subtract$1
      , mul = multiply$1
      , dist$1 = distance
      , forEach$3 = function() {
        var u = create$3();
        return function(t, e, r, n, i, a) {
            var o, s;
            for (e = e || 2,
            r = r || 0,
            s = n ? Math.min(n * e + r, t.length) : t.length,
            o = r; o < s; o += e)
                u[0] = t[o],
                u[1] = t[o + 1],
                i(u, u, a),
                t[o] = u[0],
                t[o + 1] = u[1];
            return t
        }
    }()
      , Event = function() {
        function t() {
            this.vI = {}
        }
        return t.addListener = function(t, e, r) {
            t.on(e, r)
        }
        ,
        t.trigger = function(t, e, r) {
            t.emit(e, r)
        }
        ,
        t.clearListeners = function(t, e) {
            t.clearEvents(e)
        }
        ,
        t.addDomListener = function(t, e, r) {
            t.addEventListener(e, r)
        }
        ,
        t.extend = function(t, r, n) {
            forEach(t = "string" == typeof t ? [t] : t, function(e) {
                r.on(e, function(t) {
                    n.emit(e, t)
                })
            })
        }
        ,
        t.prototype.on = function(t, e, r, n) {
            void 0 === r && (r = this),
            void 0 === n && (n = !1);
            for (var i = 0, a = Array.isArray(t) ? t : [t]; i < a.length; i++) {
                var o = a[i];
                this._on(o, e, r, n)
            }
            return this
        }
        ,
        t.prototype.off = function(t, e, r) {
            void 0 === r && (r = this);
            var n = this.vI;
            if (t in n)
                for (var i = 0; i < n[t].length; i += 1)
                    if (n[t][i].fn === e && n[t][i].context === r)
                        return n[t].splice(i, 1),
                        this;
            return this
        }
        ,
        t.prototype.hasEvents = function(t, e, r) {
            void 0 === r && (r = this);
            var n = this.vI;
            if (t && e && t in n)
                for (var i = 0; i < n[t].length; i += 1)
                    if (n[t][i].fn === e && n[t][i].context === r)
                        return !0;
            return !1
        }
        ,
        t.prototype.clearEvents = function(t) {
            return t ? this.vI[t] && delete this.vI[t] : this.vI = {},
            this
        }
        ,
        t.prototype.emit = function(t, e) {
            if (void 0 === e && (e = {}),
            t in this.vI) {
                for (var r = exports.Ln(exports.Ln({}, e), {
                    type: t
                }), n = this.vI[t], i = 0, a = n.length; i < a; i += 1) {
                    var o = n[i];
                    o && o.fn && (o.fn.call(o.context, r),
                    o.once) && (this.vI[t].splice(i, 1),
                    --i,
                    --a)
                }
                0 === n.length && delete this.vI[t]
            }
            return this
        }
        ,
        t.prototype.getEvents = function() {
            return this.vI
        }
        ,
        t.prototype._on = function(t, e, r, n) {
            var i;
            return void 0 === n && (n = !1),
            this.hasEvents(t, e, r = void 0 === r ? this : r) || ((i = this.vI)[t] = i[t] || [],
            i[t].push({
                fn: e,
                context: r || this,
                once: n
            })),
            this
        }
        ,
        t
    }()
      , NebulaTileCoord = function() {
        var o = [-180, -90]
          , s = [180, 90]
          , u = s[0] - o[0]
          , c = s[1] - o[1];
        return {
            ga: function(t, e, r, n) {
                void 0 === n && (n = "lnglat");
                var r = Math.pow(2, r)
                  , i = u / r
                  , r = c / r
                  , a = ProjectionManager.getProjection("EPSG:3857");
                return "lnglat" === n ? [t * i + o[0], s[1] - e * r, (t + 1) * i + o[0], s[1] - (e + 1) * r] : "EPSG:3857" === n ? (n = a.project(t * i + o[0], s[1] - e * r),
                a = a.project((t + 1) * i + o[0], s[1] - (e + 1) * r),
                [n[0], n[1], a[0], a[1]]) : [0, 0, 0, 0]
            }
        }
    }()
      , ComputeTileRange = function() {
        function t() {}
        return t.ha = function(t, e) {
            for (var r = [t[0], t[3]], t = [t[2], t[1]], r = this.Ga(r, e), t = this.Ga(t, e), n = r[0], i = r[1], a = t[0], o = t[1], s = [], u = n; u <= a; u += 1)
                for (var c = i; c <= o; c += 1)
                    s.push([e, u, c]);
            return s
        }
        ,
        t.Ga = function(t, e) {
            var r = 180 / (e = Math.pow(2, e));
            return [Math.floor(t[0] / (360 / e)) + e / 2, e / 2 - Math.ceil(t[1] / r)]
        }
        ,
        t.ra = function(t) {
            return {
                2: 3,
                3: 3,
                4: 3,
                5: 3,
                6: 6,
                7: 6,
                8: 8,
                9: 8,
                10: 10,
                11: 10,
                12: 10,
                13: 12,
                14: 12,
                15: 14,
                16: 14,
                17: 14,
                18: 14,
                19: 14,
                20: 14,
                21: 14,
                22: 14
            }[t]
        }
        ,
        t
    }()
      , Task = function() {
        function t(t) {
            var r = this;
            this.xN = t,
            this.cancel = function() {
                r.xN && r.xN.cancel();
                for (var t = 0, e = r.children; t < e.length; t++)
                    e[t].cancel.apply(r)
            }
            ,
            this.children = []
        }
        return t.prototype._H = function(t) {
            this.children.push(t)
        }
        ,
        t
    }()
      , LabelPlacement = function() {
        function t(t) {
            this.options = {},
            this.Gj = {},
            this.Hj = {},
            this.Vj = {},
            this.Wj = {},
            this.$j = 0,
            this.render = null,
            this.NO = {},
            this.ac = t.z_,
            this.Mf = t.R_,
            this.io = t.canvas,
            this.NT = t.Nz
        }
        return t.prototype.nO = function(t, e) {
            this.iO = (e = void 0 === e ? {} : e).from || "inner",
            labelsUtil.zj(this, t),
            this.eO(e)
        }
        ,
        t.prototype.destroy = function() {}
        ,
        t.prototype.oO = function() {
            return this.gs.aO()
        }
        ,
        t.prototype.uO = function() {
            return this.oO().viewMode,
            !0
        }
        ,
        t.prototype.eO = function(t) {
            var e, r, n, i, a, o = (t = void 0 === t ? {} : t).center, s = this.Gj || {}, u = this.Vj || {}, c = this.Hj || {}, f = this.iO, h = 0;
            for (e in s)
                s.hasOwnProperty(e) && e && (a = s[e] || {},
                c[e] = this.sO(e, a),
                u[e] = this.fO(e, a, c[e], {
                    from: f,
                    center: o
                }),
                r = a.data.txt,
                n = (i = a.opts).icon,
                i = i.text || {},
                a = a.CO,
                r && a && (h += a.length + 1,
                i.style) && i.style.borderWidth && (h += 4),
                n) && n.length && n[0].image && (h += n.length);
            this.$j = h,
            this.Vj = u,
            this.Hj = c
        }
        ,
        t.prototype.hO = function(t, e) {
            var r = CONSTS.Mp
              , n = CONSTS.Rp
              , i = (t = void 0 === t ? [] : t)[0] || r
              , t = t[1] || n;
            return [(r = (e = void 0 === e ? [] : e)[0] || r) < i ? i : r, t < (e = e[1] || n) ? t : e]
        }
        ,
        t.prototype.cO = function(t, e) {
            var r = {};
            return r.type = (t = void 0 === t ? {} : t).type || e.type,
            r.image = t.image || "",
            r.clipOrigin = t.clipOrigin || e.clipOrigin,
            r.clipSize = t.clipSize,
            r.size = t.size,
            r.offset = t.offset,
            r.anchor = t.anchor || e.anchor,
            r.angel = t.angel || e.angel,
            r.retina = t.retina || e.retina,
            r.zooms = t.zooms || e.zooms,
            r
        }
        ,
        t.prototype.vO = function(t, e) {
            var r = {}
              , e = (r.type = (t = void 0 === t ? {} : t).type || e.type,
            r.direction = t.direction || e.direction,
            r.offset = t.offset || e.offset,
            r.zooms = t.zooms || e.zooms,
            e.style)
              , t = t.style || {}
              , n = (r.style = {},
            r.style.fontFamily = t.fontFamily || e.fontFamily,
            r.style.fontSize = t.fontSize || e.fontSize,
            r.style.fontWeight = t.fontWeight || e.fontWeight,
            r.style.fillColor = t.fillColor || e.fillColor,
            t.strokeColor)
              , i = t.strokeWidth;
            return isUndefined(i) && isUndefined(n) ? r.style.strokeWidth = e.strokeWidth : isUndefined(i) && !isUndefined(n) ? r.style.strokeWidth = 1 : r.style.strokeWidth = t.strokeWidth,
            r.style.borderColor = t.borderColor,
            r.style.borderWidth = t.borderWidth,
            r.style.strokeColor = t.strokeColor || e.strokeColor,
            r.style.borderColor = t.borderColor || e.borderColor,
            r.style.backgroundColor = t.backgroundColor,
            r.style.padding = t.padding || e.padding,
            r.style.fold = void 0 !== t.fold && t.fold,
            r
        }
        ,
        t.prototype.lO = function(t) {
            return [(t = (this.ac.Fs || {})[t] || {}).width || 36, t.height || 36]
        }
        ,
        t.prototype.dO = function(t, e) {
            var r = CONSTS.sj
              , e = ((r = this.cO(t, r.icon)).zooms = t.zooms || e.bO,
            this.hO(e.zooms, r.zooms));
            return r.zooms = e,
            r.size && r.clipSize || (t = (e = this.lO(t.image || ""))[0] || 0,
            e = e[1] || 0,
            r.size || (r.size = [t, e]),
            r.clipSize) || (r.clipSize = [t, e]),
            r
        }
        ,
        t.prototype.pO = function(t, e) {
            var r = CONSTS.sj
              , t = ((r = this.vO(t = void 0 === t ? {} : t, r.text)).zooms = t.zooms || e.bO,
            r.direction)
              , n = e.yO
              , n = (t = this.mO(t || "", n)).textAlign
              , t = t.verticalAlign
              , n = (r.style && (r.style.textAlign = n,
            r.style.verticalAlign = t),
            this.hO(e.zooms, r.zooms));
            return r.zooms = n,
            r
        }
        ,
        t.prototype.sO = function(t, e) {
            var r = (r = e.data) && r.txt
              , n = (e = e.opts || {}).angle || 0
              , i = isUndefined(e.opacity) ? 1 : e.opacity
              , a = e.icon
              , o = e.text
              , s = e.zooms
              , e = e.visible
              , u = {
                angle: n,
                opacity: i,
                zooms: this.options.zooms,
                bO: s
            }
              , c = [];
            if (a)
                for (var f = 0, h = a; f < h.length; f++) {
                    var l = h[f];
                    c.push(this.dO(l, u))
                }
            return u.yO = !!a,
            (n = r ? this.pO(o, u) : null) && (n.txt = r),
            i = {
                icon: c,
                text: n,
                visible: e
            },
            "labelsLayer" === this.iO && (i.showText = 1,
            i.showIcon = 1),
            i
        }
        ,
        t.prototype.gO = function(t) {
            var e;
            return this.oO().zoom < LocalZoom ? t : (e = lcs.getLocalByCoord(t),
            vector.Ip(t, e.center))
        }
        ,
        t.prototype.wO = function(t, e) {
            var r, n;
            return e && e.image ? (n = CONSTS.sj.icon,
            r = e.size || this.lO(e.image),
            e = e.anchor || n.anchor,
            {
                size: r,
                origin: t,
                anchorOffset: n = this._getAnchorOffset(r, e),
                coords: vector.add(t, n)
            }) : {
                size: [0, 0],
                origin: t,
                anchorOffset: [0, 0],
                coords: t
            }
        }
        ,
        t.prototype.MO = function(t, e, r) {
            var n, i, a, o, s, u;
            return "text" === (t = void 0 === t ? "icon" : t) ? (t = e.origin,
            e.start,
            o = r.padding,
            u = r.c,
            r = void 0,
            n = o.offsetX,
            i = o.offsetY,
            a = o.w,
            o = o.h,
            s = (this.uO() ? (r = u[0],
            u) : (r = t[0],
            t))[1],
            {
                x: r + n,
                y: s + i,
                width: a,
                height: o
            }) : (t = e.size,
            e.coords,
            {
                x: (u = e.c)[0],
                y: u[1],
                width: (r = void 0 === t ? [] : t)[0] || 0,
                height: r[1] || 0
            })
        }
        ,
        t.prototype._getAnchorOffset = function(t, e) {
            var r = CONSTS.JM
              , n = t[0] || 0
              , i = t[1] || 0;
            if ("[object Array]" === Object.prototype.toString.apply(e)) {
                var t = e[0]
                  , a = e[1];
                if ("number" == typeof t && "number" == typeof a)
                    return vector.tA(e)
            } else if ("string" == typeof e) {
                var a = (t = e.split("-"))[0]
                  , e = t[1]
                  , o = 0
                  , s = 0;
                switch (a !== r.ij || e || (a = r.nj,
                e = r.ij),
                e) {
                case r.LEFT:
                    o = 0;
                    break;
                case r.ij:
                    o = -n / 2;
                    break;
                case r.QM:
                    o = -n;
                    break;
                default:
                    o = 0
                }
                switch (a) {
                case r.ZM:
                    s = 0;
                    break;
                case r.nj:
                    s = -i / 2;
                    break;
                case r.tj:
                    s = -i;
                    break;
                default:
                    s = 0
                }
                return [o, s]
            }
            return [0, 0]
        }
        ,
        t.prototype.jO = function(t) {
            return this._getAnchorOffset(t.size || [0, 0], "middle-center")
        }
        ,
        t.prototype.AO = function(t, e, r, n) {
            var i, o = CONSTS.JM, u = void 0 === (s = (n = void 0 === n ? {} : n).kO) ? 0 : s, c = void 0 !== (s = n.yO) && s, s = n.padding, f = n.lines, h = (n = this.jO(t))[0] || 0, n = n[1] || 0, l = t.anchorOffset || [], d = l[0] || 0, v = l[1] || 0, g = (l = t.size || [])[0] || 0, p = l[1] || 0, y = d - h, m = v - n, b = s[0], T = s[1], x = s[2], M = s[3], S = .8 * u;
            switch (r) {
            case o.ZM:
                a = c ? (i = y,
                v - x - .2 * u - (A = S * f + 3 * (f - 1))) : (i = d + M,
                v + b);
                break;
            case o.QM:
                var A = S / 2 * f + 1.5 * (f - 1)
                  , a = c ? (i = d + g + M,
                m - A) : (i = d - T,
                v - A - x);
                break;
            case o.tj:
                a = c ? (i = y,
                v + p + b) : (i = d + M,
                v - x - (A = S * f + 3 * (f - 1)));
                break;
            case o.LEFT:
                A = S / 2 * f + 1.5 * (f - 1);
                a = c ? (i = d - T,
                m - A) : (i = d + M,
                v - A - x);
                break;
            case o.nj:
            case o.ij:
                a = c ? (i = d + g / 2,
                m - (A = S / 2 * f + 1.5 * (f - 1))) : (i = d,
                v - (A = S / 2 * f + 1.5 * (f - 1)) - x);
                break;
            default:
                i = d,
                a = v - (A = S / 2 * f + 1.5 * (f - 1)) - x
            }
            return [i, a]
        }
        ,
        t.prototype.OO = function(t, e) {
            var r, n, i = CONSTS.JM, a = (e = void 0 === e ? {} : e).xO, o = (e.kO,
            e.yO), s = e.direction, u = e.lines, c = e.size, f = (e.IO,
            t[0] || 0), h = t[1] || 0;
            switch (this.mO(s, o).textAlign) {
            case i.LEFT:
                r = f,
                n = h;
                break;
            case i.QM:
                r = f - a,
                n = h;
                break;
            case i.ij:
                r = f - a / 2,
                n = h
            }
            return {
                x: r,
                y: n,
                w: a,
                h: this.TO(c, u),
                FO: f,
                _O: h
            }
        }
        ,
        t.prototype.mO = function(t, e) {
            var r, n, i = CONSTS.JM;
            if (e)
                switch (t) {
                case i.LEFT:
                    r = i.QM;
                    break;
                case i.QM:
                    r = i.LEFT;
                    break;
                case i.ZM:
                case i.tj:
                default:
                    r = i.ij,
                    n = i.tj
                }
            else
                switch (t) {
                case i.LEFT:
                case i.ij:
                case i.QM:
                    r = t,
                    n = i.tj;
                    break;
                case i.ZM:
                case i.tj:
                case i.nj:
                default:
                    r = i.LEFT,
                    n = t
                }
            return {
                textAlign: r,
                verticalAlign: n
            }
        }
        ,
        t.prototype.TO = function(t, e) {
            return void 0 === t && (t = 12),
            (t *= 5 / 4) * (e = void 0 === e ? 1 : e) + 3 * (e - 1)
        }
        ,
        t.prototype.CT = function(t, e) {
            return this.Mf ? this.Mf.measureText(t, e) : this.NT ? (this.NT.font = (e || 12) + "px",
            this.NT.measureText(t.join("")).width) : 0
        }
        ,
        t.prototype.SO = function(t, e, r) {
            var n, i, a, o, s, u, c, f;
            return e && r.txt ? (n = (o = CONSTS.sj.text).direction,
            i = o.offset,
            o = o.style,
            c = r.yO,
            s = r.CO,
            n = e.direction || n,
            i = e.offset || i,
            a = (e = e.style || o).fontSize || 12,
            f = e.padding || o.padding,
            e = !1 === e.fold ? 100 : o.fj,
            o = r.txt.length,
            r = (s = this.Mf.lineBreak(r.txt, {
                fontSize: a,
                CO: s,
                type: r.BG || "ch",
                fj: e,
                YQ: this.NT,
                from: r.from
            })).lines.length,
            u = this.TO(a, 1),
            s = {
                xO: s.maxWidth,
                kO: u,
                yO: c,
                direction: n,
                padding: f,
                fj: e,
                lines: r,
                size: a,
                IO: o
            },
            u = this.AO(t, t.size, n, s),
            c = vector.add(u, i),
            f = vector.add(t.origin, c),
            e = this.OO(f, s),
            {
                origin: t.origin,
                offset: c,
                coords: f,
                start: e
            }) : {
                origin: t.origin,
                offset: [0, 0],
                coords: t.coords,
                start: {}
            }
        }
        ,
        t.prototype.EO = function(t, e, r) {
            if (!e || !r.txt)
                return {
                    offsetX: 0,
                    offsetY: 0,
                    w: 0,
                    h: 0
                };
            var n, i, a = CONSTS.JM, o = CONSTS.sj, s = (t.coords,
            t.start), u = (t = void 0 === (t = t.offset) ? [] : t)[0], c = t[1], f = s.w, t = s.h, s = r.yO, o = (r = o.text).direction, r = r.style, o = e.direction || o, h = (e = (e.style || r).padding || r.padding)[0], r = e[1], l = e[2], d = e[3];
            if (s)
                switch (o) {
                case a.ZM:
                    n = u - f / 2 - d,
                    i = c - h;
                    break;
                case a.QM:
                    n = u - d,
                    i = c - h;
                    break;
                case a.tj:
                    n = u - f / 2 - d,
                    i = c - h;
                    break;
                case a.LEFT:
                    n = u - f - d,
                    i = c - h;
                    break;
                case a.nj:
                case a.ij:
                    n = u - f / 2 - d,
                    i = c - h;
                    break;
                default:
                    n = u - f / 2 - d,
                    i = c + l
                }
            else
                switch (o) {
                case a.ZM:
                    n = u - d,
                    i = c + l;
                    break;
                case a.QM:
                    n = u - f - d,
                    i = c + l;
                    break;
                case a.tj:
                case a.LEFT:
                    n = u - d,
                    i = c + l;
                    break;
                case a.nj:
                case a.ij:
                    n = u - f / 2 - d,
                    i = c - h;
                    break;
                default:
                    n = u - f / 2 - d,
                    i = c + l
                }
            return {
                offsetX: n,
                offsetY: i,
                w: f + d + r,
                h: t + h + l
            }
        }
        ,
        t.prototype.fO = function(t, e, r, n) {
            var i = (n = void 0 === n ? {} : n).from
              , a = n.center
              , o = e.data
              , s = e.opts || {}
              , u = o.position
              , c = o.txt
              , s = s.icon
              , r = r.text
              , e = e.CO
              , f = this.oO().zoom
              , f = (a[2] = a[2] || 0,
            i = "inner" !== i || "relative" !== o.positionType && LocalZoom <= f ? vector.Ip(u, a) : u,
            vector.add(i, [0, 0]))
              , a = !!s;
            return {
                origin: i,
                icon: u = this.wO(f, s && s[0]),
                text: f = this.SO(u, r, {
                    CO: e,
                    txt: c,
                    yO: a,
                    BG: o.BG,
                    from: n.from
                }),
                padding: this.EO(f, r, {
                    txt: c,
                    yO: a
                })
            }
        }
        ,
        t
    }()
      , LabelGroup = function() {
        function t() {
            this.oT = {},
            this.index = 1
        }
        return t.prototype.nT = function(t) {
            var e, r, n, i, a;
            return t ? (e = t.fontSize,
            a = void 0 === (a = t.fillColor) ? CONSTS.COLOR.Uj : a,
            r = void 0 === (r = t.strokeColor) ? CONSTS.COLOR.Uj : r,
            n = t.strokeWidth,
            i = t.backgroundColor,
            t = t.borderColor,
            a = labelsUtil.toString(a) + labelsUtil.toString(r) + (i ? labelsUtil.toString(i) : "" + (t ? labelsUtil.toString(t) : "")) + e + n,
            this.AS(a),
            this.oT[a]) : ""
        }
        ,
        t.prototype.AS = function(t) {
            this.oT[t] || (this.oT[t] = this.index++)
        }
        ,
        t
    }()
      , labelGroup = new LabelGroup
      , isSupportFloat64Array = "undefined" != typeof Float64Array
      , isSupportFloat32Array$1 = "undefined" != typeof Float32Array
      , RESIZE_MULTIPLIER = (isSupportFloat64Array ? setMatrixArrayType(Float64Array) : isSupportFloat32Array$1 ? setMatrixArrayType(Float32Array) : (window.Float32Array = void 0,
    setMatrixArrayType(Array)),
    2)
      , DEFAULT_CAPACITY = 128
      , StructArray = function() {
        function t() {
            this.pM = !1,
            this.yM = -1,
            this.length = 0
        }
        return t.Wb = function(t, e) {
            return t.trim(),
            e && (t.pM = !0,
            e.push(t.arrayBuffer)),
            {
                length: t.length,
                arrayBuffer: t.arrayBuffer
            }
        }
        ,
        t.Gb = function(t) {
            var e = Object.create(this.prototype);
            return e.arrayBuffer = t.arrayBuffer,
            e.length = t.length,
            e.yM = t.arrayBuffer.byteLength / this.Rb,
            e.mM(),
            e
        }
        ,
        t.prototype.trim = function() {
            this.length !== this.yM && (this.yM = this.length,
            this.arrayBuffer = this.arrayBuffer.slice(0, this.length * this.constructor.Rb),
            this.mM())
        }
        ,
        t.prototype.resize = function(t) {
            this.gM(t),
            this.length = t
        }
        ,
        t.prototype.gM = function(t) {
            t > this.yM && (this.yM = Math.max(t, Math.floor(this.yM * RESIZE_MULTIPLIER), DEFAULT_CAPACITY),
            t = this.wM,
            this.arrayBuffer = new ArrayBuffer(this.yM * this.constructor.Rb),
            this.mM(),
            t) && this.wM.set(t)
        }
        ,
        t
    }()
      , FillArray = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.pM = !1,
            t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e) {
            var r = this.length;
            this.resize(this.length + 1),
            this.MM(r, t, e)
        }
        ,
        t.prototype.MM = function(t, e, r) {
            this.Mb[t *= 2] = e,
            this.Mb[1 + t] = r
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.Mb = new Float32Array(this.arrayBuffer)
        }
        ,
        t.Rb = 8,
        t
    }(StructArray)
      , FillExtrusionArray = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.pM = !1,
            t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e, r, n, i, a) {
            var o = this.length;
            this.resize(o + 1),
            this.MM(o, t, e, r, n, i, a)
        }
        ,
        t.prototype.MM = function(t, e, r, n, i, a, o) {
            var s = 8 * t
              , e = (this.Mb[s] = e,
            this.Mb[1 + s] = r,
            this.Mb[2 + s] = n,
            this.Mb[3 + s] = i,
            this.Mb[4 + s] = a[0],
            this.Mb[5 + s] = a[1],
            this.Mb[6 + s] = a[2],
            16 * t);
            this.jM[14 + e] = o[0],
            this.jM[15 + e] = o[1]
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.Mb = new Float32Array(this.arrayBuffer),
            this.jM = new Uint16Array(this.arrayBuffer)
        }
        ,
        t.Rb = 32,
        t
    }(StructArray)
      , LinesIndexArray = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.length = 0,
            t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e) {
            var r = this.length;
            this.resize(this.length + 1),
            this.MM(r, t, e)
        }
        ,
        t.prototype.MM = function(t, e, r) {
            this.jM[t *= 2] = e,
            this.jM[1 + t] = r
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.jM = new Uint16Array(this.arrayBuffer)
        }
        ,
        t.Rb = 4,
        t
    }(StructArray)
      , LinesIndexArrayUint = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.length = 0,
            t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e) {
            var r = this.length;
            this.resize(this.length + 1),
            this.MM(r, t, e)
        }
        ,
        t.prototype.MM = function(t, e, r) {
            this.UI[t *= 2] = e,
            this.UI[1 + t] = r
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.UI = new Uint32Array(this.arrayBuffer)
        }
        ,
        t.Rb = 8,
        t
    }(StructArray)
      , LineArrayBuffer = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e, r, n) {
            var i = this.length;
            this.resize(i + 1),
            this.MM(i, t, e, r, n)
        }
        ,
        t.prototype.MM = function(t, e, r, n, i) {
            t *= this.constructor.Rb / 4,
            this.Mb[t] = e[0],
            this.Mb[1 + t] = e[1],
            this.Mb[2 + t] = r[0],
            this.Mb[3 + t] = r[1],
            this.Mb[4 + t] = n,
            this.Mb[5 + t] = i[0],
            this.Mb[6 + t] = i[1]
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.Mb = new Float32Array(this.arrayBuffer)
        }
        ,
        t.Rb = 28,
        t
    }(StructArray)
      , TriangleIndexArray = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e, r) {
            var n = this.length;
            this.resize(n + 1),
            this.MM(n, t, e, r)
        }
        ,
        t.prototype.MM = function(t, e, r, n) {
            this.jM[t *= 3] = e,
            this.jM[1 + t] = r,
            this.jM[2 + t] = n
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.jM = new Uint16Array(this.arrayBuffer)
        }
        ,
        t.Rb = 6,
        t
    }(StructArray)
      , TriangleIndexArrayUint = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e, r) {
            var n = this.length;
            this.resize(n + 1),
            this.MM(n, t, e, r)
        }
        ,
        t.prototype.MM = function(t, e, r, n) {
            this.UI[t *= 3] = e,
            this.UI[1 + t] = r,
            this.UI[2 + t] = n
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.UI = new Uint32Array(this.arrayBuffer)
        }
        ,
        t.Rb = 12,
        t
    }(StructArray)
      , SymbolArray = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.pM = !1,
            t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e, r) {
            var n = this.length;
            this.resize(this.length + 1),
            this.MM(n, t, e, r)
        }
        ,
        t.prototype.MM = function(t, e, r, n) {
            var t = 13 * t
              , e = (this.Mb[t] = e,
            this.Mb[1 + t] = r,
            n.color)
              , r = n.borderColor
              , i = n.radius
              , a = n.borderWidth;
            this.Mb[2 + t] = i,
            this.Mb[3 + t] = a,
            this.Mb[4 + t] = e[0],
            this.Mb[5 + t] = e[1],
            this.Mb[6 + t] = e[2],
            this.Mb[7 + t] = e[3],
            this.Mb[8 + t] = r[0],
            this.Mb[9 + t] = r[1],
            this.Mb[10 + t] = r[2],
            this.Mb[11 + t] = r[3],
            this.Mb[12 + t] = +(n.visible && n.filter)
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.Mb = new Float32Array(this.arrayBuffer)
        }
        ,
        t.Rb = 52,
        t
    }(StructArray)
      , SimpleSymbolArray = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.pM = !1,
            t.resize(0),
            t
        }
        return __extends(t, e),
        t.prototype.kb = function(t, e) {
            var r = this.length;
            this.resize(this.length + 1),
            this.MM(r, t, e)
        }
        ,
        t.prototype.MM = function(t, e, r) {
            this.Mb[t *= 2] = e,
            this.Mb[1 + t] = r
        }
        ,
        t.prototype.mM = function() {
            this.wM = new Uint8Array(this.arrayBuffer),
            this.Mb = new Float32Array(this.arrayBuffer)
        }
        ,
        t.Rb = 4,
        t
    }(StructArray)
      , SmartArrayBuffer = function() {
        function t(t, e, r, n) {
            void 0 === n && (n = "ARRAY_BUFFER"),
            this.AM = t,
            this.kM = r,
            this.type = n,
            t && (this.buffer = "ARRAY_BUFFER" === n ? t.fe(e, r, "DYNAMIC_DRAW") : t.ve(e),
            this.uf = e.byteLength,
            this.byteLength = e.byteLength)
        }
        return t.prototype.update = function(t) {
            var e, r, n;
            0 !== t.length && this.AM && (e = "ARRAY_BUFFER" === this.type,
            r = this.AM.gl,
            n = (e ? this.AM.de : this.AM.me).current,
            (e ? this.AM.de : this.AM.me).set(this.buffer),
            this.uf < t.byteLength ? (r.bufferData(r[this.type], t, r.STATIC_DRAW),
            this.byteLength = t.byteLength,
            this.uf = t.byteLength) : (r.bufferSubData(r[this.type], 0, t),
            this.byteLength = t.byteLength),
            (e ? this.AM.de : this.AM.me).set(n))
        }
        ,
        t.prototype.destroy = function() {
            this.buffer && this.AM && this.AM.deleteBuffer(this.buffer)
        }
        ,
        t.prototype.TX = function() {
            this.AM = null
        }
        ,
        __decorate([InnerClass("SmartArrayBuffer")], t)
    }()
      , COS_HALF_SHARP_CORNER = Math.cos(Math.PI / 180 * 75)
      , prepMatClockwise = fromValues(0, -1, 1, 0)
      , perpMatCounterClockwise = fromValues(0, 1, -1, 0);
    function perpCounterClockwise(t, e) {
        transformMat2(t, e, perpMatCounterClockwise)
    }
    function perpClockwise(t, e) {
        transformMat2(t, e, prepMatClockwise)
    }
    var minRoundAngle = Math.PI / 9, emptyVec2 = create$3(), emptyVec3 = create$1(), prevPos = create$3(), currentPos = create$3(), nextPos = create$3(), tmpPos = create$3(), currentNormal = create$3(), nextNormal = create$3(), distance$1 = 0, nextDir = create$3(), currentDir = create$3(), negateCurrentNormal = create$3(), lineJoin, lineCap, currentNormal_addLineVertex = create$3(), leftNormal = create$3(), rightNormal = create$3(), offsetLeft = create$3(), offsetRight = create$3(), joinNormal_addMiter = create$3(), tmp_addTiangleVertex = create$1(), currentNormal_addTiangleVertex = create$3(), nextNormal_addTiangleVertex = create$3(), normal_addTiangleVertex = create$3(), tmp_addRoundVertex = create$1(), currentNormal_addRoundVertex = create$3(), nextNormal_addRoundVertex = create$3(), tmpNormal_addRoundVertex = create$3(), roundCenter_addRoundVertex = create$3(), CoreLineBucket = function() {
        function h() {
            this._b = new LineArrayBuffer,
            this.e1 = this.e2 = this.e3 = -1,
            this.uploaded = !1
        }
        return h.OM = function(t, e, r) {
            sub$1(t, e, r),
            normalize(t, t),
            perpCounterClockwise(t, t)
        }
        ,
        h.xM = function(t, e, r) {
            add(t, e, r),
            0 === t[0] && 0 === t[1] || normalize(t, t)
        }
        ,
        h.prototype.hb = function(t, e) {
            if (t.length < 4)
                return {
                    Iw: 0,
                    distance: 0
                };
            "auto" === (e = void (distance$1 = 0) === e ? {
                X_: 1,
                lineJoin: "miter",
                lineCap: "butt"
            } : e).lineJoin && (e.lineJoin = "miter"),
            lineJoin = e.lineJoin,
            lineCap = e.lineCap || "butt";
            for (var r, n = this.Qx.length, i = 0, a = t.length; i < a; i += 2)
                0 === i ? (currentPos[0] = t[i],
                currentPos[1] = t[i + 1],
                nextPos[0] = t[i + 2],
                nextPos[1] = t[i + 3],
                h.OM(nextNormal, nextPos, currentPos),
                copy$1(currentNormal, nextNormal),
                sub$1(nextDir, nextPos, currentPos),
                normalize(nextDir, nextDir),
                "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, e.X_, "bevel") : ("round" === lineCap && (copy$1(negateCurrentNormal, currentNormal),
                negate(negateCurrentNormal, currentNormal),
                this.DI(currentPos, negateCurrentNormal, currentNormal, distance$1)),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, "bevel")),
                copy$1(currentDir, nextDir),
                copy$1(prevPos, currentPos)) : i === a - 2 ? (currentPos[0] = t[i],
                currentPos[1] = t[i + 1],
                r = dist$1(currentPos, prevPos),
                distance$1 += r,
                "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, -1 * e.X_, "miter") : "round" === lineCap ? (this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, 0, "miter"),
                copy$1(negateCurrentNormal, nextNormal),
                negate(negateCurrentNormal, nextNormal),
                this.DI(currentPos, nextNormal, negateCurrentNormal, distance$1)) : this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, "miter")) : (currentPos[0] = t[i],
                currentPos[1] = t[i + 1],
                nextPos[0] = t[i + 2],
                nextPos[1] = t[i + 3],
                h.OM(nextNormal, nextPos, currentPos),
                0 === nextNormal[0] && 0 === nextNormal[1] || (r = dist$1(currentPos, prevPos),
                distance$1 += r,
                sub$1(nextDir, nextPos, currentPos),
                normalize(nextDir, nextDir),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
                copy$1(prevPos, currentPos),
                copy$1(currentNormal, nextNormal),
                copy$1(currentDir, nextDir)));
            return {
                Iw: 3 * (this.Qx.length - n),
                distance: distance$1
            }
        }
        ,
        h.prototype.g0 = function(t, e) {
            if (t.length < 2)
                return {
                    Iw: 0,
                    distance: 0
                };
            "auto" === (e = void (distance$1 = 0) === e ? {
                X_: 1,
                lineJoin: "miter",
                lineCap: "butt"
            } : e).lineJoin && (e.lineJoin = "miter"),
            lineJoin = e.lineJoin,
            lineCap = e.lineCap || "butt";
            for (var r, n = this.Qx.length, i = 0, a = t.length; i < a; i++)
                0 === i ? (currentPos[0] = t[i][0],
                currentPos[1] = t[i][1],
                nextPos[0] = t[i + 1][0],
                nextPos[1] = t[i + 1][1],
                h.OM(nextNormal, nextPos, currentPos),
                copy$1(currentNormal, nextNormal),
                sub$1(nextDir, nextPos, currentPos),
                normalize(nextDir, nextDir),
                "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, e.X_, "bevel") : ("round" === lineCap && (copy$1(negateCurrentNormal, currentNormal),
                negate(negateCurrentNormal, currentNormal),
                this.DI(currentPos, negateCurrentNormal, currentNormal, distance$1)),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, "bevel")),
                copy$1(currentDir, nextDir),
                copy$1(prevPos, currentPos)) : i === a - 1 ? (currentPos[0] = t[i][0],
                currentPos[1] = t[i][1],
                r = dist$1(currentPos, prevPos),
                distance$1 += r,
                "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, -1 * e.X_, "miter") : "round" === lineCap ? (this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, 0, "miter"),
                copy$1(negateCurrentNormal, nextNormal),
                negate(negateCurrentNormal, nextNormal),
                this.DI(currentPos, nextNormal, negateCurrentNormal, distance$1)) : this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, "miter")) : (currentPos[0] = t[i][0],
                currentPos[1] = t[i][1],
                nextPos[0] = t[i + 1][0],
                nextPos[1] = t[i + 1][1],
                h.OM(nextNormal, nextPos, currentPos),
                0 === nextNormal[0] && 0 === nextNormal[1] || (r = dist$1(currentPos, prevPos),
                distance$1 += r,
                sub$1(nextDir, nextPos, currentPos),
                normalize(nextDir, nextDir),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
                copy$1(prevPos, currentPos),
                copy$1(currentNormal, nextNormal),
                copy$1(currentDir, nextDir)));
            return {
                Iw: 3 * (this.Qx.length - n),
                distance: distance$1
            }
        }
        ,
        h.prototype.eD = function(t, e, r) {
            if (void 0 === r && (r = 3e3),
            t.length < 4)
                return {
                    Iw: 0,
                    distance: 0
                };
            "auto" === (e = void (distance$1 = 0) === e ? {
                X_: 1,
                lineJoin: "miter",
                lineCap: "butt"
            } : e).lineJoin && (e.lineJoin = "miter"),
            lineJoin = e.lineJoin,
            lineCap = e.lineCap || "butt";
            for (var n = this.Qx.length, i = 0, a = t.length; i < a; i += 2)
                if (0 === i)
                    currentPos[0] = t[i],
                    currentPos[1] = t[i + 1],
                    nextPos[0] = t[i + 2],
                    nextPos[1] = t[i + 3],
                    h.OM(nextNormal, nextPos, currentPos),
                    copy$1(currentNormal, nextNormal),
                    sub$1(nextDir, nextPos, currentPos),
                    normalize(nextDir, nextDir),
                    "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, e.X_, "bevel") : ("round" === lineCap && (copy$1(negateCurrentNormal, currentNormal),
                    negate(negateCurrentNormal, currentNormal),
                    this.DI(currentPos, negateCurrentNormal, currentNormal, distance$1)),
                    this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, "bevel")),
                    copy$1(currentDir, nextDir),
                    copy$1(prevPos, currentPos);
                else if (i === a - 2) {
                    tmpPos[0] = t[i],
                    tmpPos[1] = t[i + 1];
                    var o = dist$1(tmpPos, prevPos);
                    copy$1(tmpPos, prevPos);
                    for (var s = 0; r < o - s; )
                        tmpPos[0] = tmpPos[0] + currentDir[0] * r,
                        tmpPos[1] = tmpPos[1] + currentDir[1] * r,
                        s += r,
                        this.IM(tmpPos, currentNormal, nextNormal, distance$1 + s, currentDir, !1, 0, "miter"),
                        this.IM(tmpPos, currentNormal, nextNormal, distance$1 + s, currentDir, !0, 0, "miter");
                    currentPos[0] = t[i],
                    currentPos[1] = t[i + 1],
                    distance$1 += o,
                    "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, -1 * e.X_, "miter") : "round" === lineCap ? (this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, 0, "miter"),
                    copy$1(negateCurrentNormal, nextNormal),
                    negate(negateCurrentNormal, nextNormal),
                    this.DI(currentPos, nextNormal, negateCurrentNormal, distance$1)) : this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, "miter")
                } else if (currentPos[0] = t[i],
                currentPos[1] = t[i + 1],
                nextPos[0] = t[i + 2],
                nextPos[1] = t[i + 3],
                h.OM(nextNormal, nextPos, currentPos),
                0 !== nextNormal[0] || 0 !== nextNormal[1]) {
                    var u = dist$1(currentPos, prevPos);
                    for (copy$1(tmpPos, prevPos),
                    s = 0; r < u - s; )
                        tmpPos[0] = tmpPos[0] + currentDir[0] * r,
                        tmpPos[1] = tmpPos[1] + currentDir[1] * r,
                        s += r,
                        this.IM(tmpPos, currentNormal, currentNormal, distance$1 + s, currentDir, !1, 0, "miter"),
                        this.IM(tmpPos, currentNormal, currentNormal, distance$1 + s, currentDir, !0, 0, "miter");
                    currentPos[0] = t[i],
                    currentPos[1] = t[i + 1],
                    distance$1 += u,
                    sub$1(nextDir, nextPos, currentPos),
                    normalize(nextDir, nextDir),
                    this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
                    this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
                    copy$1(prevPos, currentPos),
                    copy$1(currentNormal, nextNormal),
                    copy$1(currentDir, nextDir)
                }
            return {
                Iw: 3 * (this.Qx.length - n),
                distance: distance$1
            }
        }
        ,
        h.prototype.Nx = function(t, e) {
            if (void 0 === e && (e = {
                lineJoin: "miter"
            }),
            t.length < 2)
                return {
                    Iw: 0,
                    distance: 0
                };
            for (var r, n, i = this.Qx.length, a = 0, o = t.length; a < o; a++)
                0 === a ? (copy$1(currentPos, t[a]),
                r = t[a + 1],
                n = t[o - 2],
                h.OM(nextNormal, r, currentPos),
                h.OM(currentNormal, currentPos, n),
                sub$1(nextDir, r, currentPos),
                normalize(nextDir, nextDir),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
                copy$1(currentDir, nextDir),
                copy$1(currentNormal, nextNormal),
                copy$1(prevPos, currentPos)) : a === o - 1 ? (copy$1(currentPos, t[a]),
                copy$1(nextPos, t[1]),
                distance$1 += dist$1(currentPos, prevPos),
                h.OM(nextNormal, nextPos, currentPos),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin)) : (copy$1(currentPos, t[a]),
                copy$1(nextPos, t[a + 1]),
                distance$1 += dist$1(currentPos, prevPos),
                h.OM(nextNormal, nextPos, currentPos),
                sub$1(nextDir, nextPos, currentPos),
                normalize(nextDir, nextDir),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
                this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
                copy$1(prevPos, currentPos),
                copy$1(currentNormal, nextNormal),
                copy$1(currentDir, nextDir));
            return {
                Iw: 3 * (this.Qx.length - i),
                distance: distance$1
            }
        }
        ,
        h.prototype.destroy = function() {
            this.uploaded = !1,
            this.zs && (this.zs.destroy(),
            delete this.zs),
            this.Pc && (this.Pc.destroy(),
            delete this.Pc)
        }
        ,
        h.prototype.IM = function(t, e, r, n, i, a, o, s) {
            copy$1(joinNormal_addMiter, emptyVec2),
            h.xM(joinNormal_addMiter, e, r);
            var u = dot(joinNormal_addMiter, e)
              , c = (scale$2(joinNormal_addMiter, joinNormal_addMiter, 1 / u),
            0)
              , f = 0;
            o && (f = c = o),
            "bevel" === s || "miter" === s && u < COS_HALF_SHARP_CORNER ? a ? this.SM(t, r, n, c, f, i) : (this.SM(t, e, n, c, f, i),
            this.e3 = this._b.length - 2,
            this.e2 = this.e3 - 1,
            this.e1 = this.e2 - 1,
            this.Qx.kb(this.e1, this.e2, this.e3),
            this.e1 = this.e2,
            this.e2 = this.e3,
            this.e3 = this.e3 + 1,
            this.Qx.kb(this.e1, this.e2, this.e3),
            this.CM(t, e, r, n)) : "round" === s ? a ? this.SM(t, r, n, c, f, i) : (this.SM(t, e, n, c, f, i),
            this.e3 = this._b.length - 2,
            this.e2 = this.e3 - 1,
            this.e1 = this.e2 - 1,
            this.Qx.kb(this.e1, this.e2, this.e3),
            this.e1 = this.e2,
            this.e2 = this.e3,
            this.e3 = this.e3 + 1,
            this.Qx.kb(this.e1, this.e2, this.e3),
            this.DI(t, e, r, n)) : (this.SM(t, joinNormal_addMiter, n, c, f, i),
            a || (this.e3 = this._b.length - 2,
            this.e2 = this.e3 - 1,
            this.e1 = this.e2 - 1,
            this.Qx.kb(this.e1, this.e2, this.e3),
            this.e1 = this.e2,
            this.e2 = this.e3,
            this.e3 = this.e3 + 1,
            this.Qx.kb(this.e1, this.e2, this.e3)))
        }
        ,
        h.prototype.SM = function(t, e, r, n, i, a) {
            copy$1(currentNormal_addLineVertex, e),
            copy$1(leftNormal, currentNormal_addLineVertex),
            copy$1(rightNormal, currentNormal_addLineVertex),
            copy$1(offsetLeft, emptyVec2),
            copy$1(offsetRight, emptyVec2),
            scale$2(rightNormal, currentNormal_addLineVertex, -1),
            n && (perpCounterClockwise(offsetLeft, leftNormal),
            scale$2(offsetLeft, offsetLeft, n),
            add(leftNormal, offsetLeft, leftNormal)),
            i && (perpClockwise(offsetRight, rightNormal),
            scale$2(offsetRight, offsetRight, i),
            add(rightNormal, offsetRight, rightNormal)),
            this._b.kb(t, leftNormal, r, a),
            this._b.kb(t, rightNormal, r, a)
        }
        ,
        h.prototype.CM = function(t, e, r, n) {
            void 0 === n && (n = 0),
            copy(tmp_addTiangleVertex, emptyVec3),
            copy$1(currentNormal_addTiangleVertex, e),
            copy$1(nextNormal_addTiangleVertex, r),
            copy$1(normal_addTiangleVertex, emptyVec2),
            cross$1(tmp_addTiangleVertex, currentNormal_addTiangleVertex, nextNormal_addTiangleVertex),
            e = 0 < tmp_addTiangleVertex[2],
            this._b.kb(t, normal_addTiangleVertex, n, normal_addTiangleVertex),
            e && (negate(currentNormal_addTiangleVertex, currentNormal_addTiangleVertex),
            negate(nextNormal_addTiangleVertex, nextNormal_addTiangleVertex)),
            this._b.kb(t, currentNormal_addTiangleVertex, n, normal_addTiangleVertex),
            this._b.kb(t, nextNormal_addTiangleVertex, n, normal_addTiangleVertex),
            this.e3 = this._b.length - 1,
            this.e2 = this.e3 - 1,
            this.e1 = this.e2 - 1,
            this.Qx.kb(this.e1, this.e2, this.e3)
        }
        ,
        h.prototype.DI = function(t, e, r, n) {
            void 0 === n && (n = 0),
            copy(tmp_addRoundVertex, emptyVec3),
            copy$1(currentNormal_addRoundVertex, e),
            copy$1(nextNormal_addRoundVertex, r);
            var i = angle(currentNormal_addRoundVertex, nextNormal_addRoundVertex)
              , a = (cross$1(tmp_addRoundVertex, currentNormal_addRoundVertex, nextNormal_addRoundVertex),
            0 < tmp_addRoundVertex[2])
              , o = [];
            o.push(currentNormal_addRoundVertex);
            for (var s = minRoundAngle; s < i; s += minRoundAngle) {
                var u = create$3();
                rotate(u, currentNormal_addRoundVertex, fromValues$3(0, 0), a ? s : -1 * s),
                o.push(u)
            }
            o.push(nextNormal_addRoundVertex),
            a && forEach(o, function(t) {
                negate(t, t)
            }),
            copy$1(roundCenter_addRoundVertex, emptyVec2),
            this._b.kb(t, roundCenter_addRoundVertex, n, roundCenter_addRoundVertex);
            var c = this._b.length - 1;
            this._b.kb(t, o[0], n, roundCenter_addRoundVertex),
            this.e3 = this._b.length - 1,
            this.e2 = this.e3 - 1;
            for (var f = 1, h = o.length; f < h; f++)
                this._b.kb(t, o[f], n, roundCenter_addRoundVertex),
                this.e3 = this._b.length - 1,
                this.e2 = this.e3 - 1,
                this.Qx.kb(c, this.e2, this.e3)
        }
        ,
        h
    }(), PolylineBucket = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.Qx = new TriangleIndexArrayUint,
            t
        }
        return __extends(t, e),
        t.prototype.upload = function(t, e) {
            void 0 === e && (e = !1),
            this.uploaded || (this.uploaded = !0,
            this.zs ? this.zs.update(this._b.Mb) : this.zs = new SmartArrayBuffer(t,this._b.Mb,LineArrayBuffer.Rb),
            this.Pc ? this.Pc.update(this.Qx.UI) : this.Pc = new SmartArrayBuffer(t,this.Qx.UI,32,"ELEMENT_ARRAY_BUFFER"),
            e && (delete this.Qx,
            delete this._b))
        }
        ,
        t.prototype.reset = function() {
            this.uploaded = !1,
            this._b = new LineArrayBuffer,
            this.Qx = new TriangleIndexArrayUint,
            this.e1 = this.e2 = this.e3 = -1,
            this.uploaded = !1
        }
        ,
        t
    }(CoreLineBucket), earcut_1 = earcut, default_1$1 = earcut;
    function earcut(t, e, r) {
        r = r || 2;
        var n, i, a, o, s, u = e && e.length, c = u ? e[0] * r : t.length, f = linkedList(t, 0, c, r, !0), h = [];
        if (f && f.next !== f.NM) {
            if (u && (f = eliminateHoles(t, e, f, r)),
            t.length > 80 * r) {
                for (var l = n = t[0], d = i = t[1], v = r; v < c; v += r)
                    (a = t[v]) < l && (l = a),
                    (o = t[v + 1]) < d && (d = o),
                    n < a && (n = a),
                    i < o && (i = o);
                s = 0 !== (s = Math.max(n - l, i - d)) ? 32767 / s : 0
            }
            earcutLinked(f, h, r, l, d, s, 0)
        }
        return h
    }
    function linkedList(t, e, r, n, i) {
        var a, o;
        if (i === 0 < signedArea(t, e, r, n))
            for (a = e; a < r; a += n)
                o = insertNode(a, t[a], t[a + 1], o);
        else
            for (a = r - n; e <= a; a -= n)
                o = insertNode(a, t[a], t[a + 1], o);
        return o && equals$2(o, o.next) && (removeNode(o),
        o = o.next),
        o
    }
    function filterPoints(t, e) {
        if (!t)
            return t;
        e = e || t;
        var r, n = t;
        do {
            if (r = !1,
            n.LM || !equals$2(n, n.next) && 0 !== area(n.NM, n, n.next))
                n = n.next;
            else {
                if (removeNode(n),
                (n = e = n.NM) === n.next)
                    break;
                r = !0
            }
        } while (r || n !== e);
        return e
    }
    function earcutLinked(t, e, r, n, i, a, o) {
        if (t) {
            !o && a && indexCurve(t, n, i, a);
            for (var s, u, c = t; t.NM !== t.next; )
                if (s = t.NM,
                u = t.next,
                a ? isEarHashed(t, n, i, a) : isEar(t))
                    e.push(s.i / r | 0),
                    e.push(t.i / r | 0),
                    e.push(u.i / r | 0),
                    removeNode(t),
                    t = u.next,
                    c = u.next;
                else if ((t = u) === c) {
                    o ? 1 === o ? earcutLinked(t = cureLocalIntersections(filterPoints(t), e, r), e, r, n, i, a, 2) : 2 === o && splitEarcut(t, e, r, n, i, a) : earcutLinked(filterPoints(t), e, r, n, i, a, 1);
                    break
                }
        }
    }
    function isEar(t) {
        var e = t.NM
          , r = t;
        if (!(0 <= area(e, r, t = t.next))) {
            for (var n = e.x, i = r.x, a = t.x, o = e.y, s = r.y, u = t.y, c = n < i ? n < a ? n : a : i < a ? i : a, f = o < s ? o < u ? o : u : s < u ? s : u, h = i < n ? a < n ? n : a : a < i ? i : a, l = s < o ? u < o ? o : u : u < s ? s : u, d = t.next; d !== e; ) {
                if (d.x >= c && d.x <= h && d.y >= f && d.y <= l && pointInTriangle(n, o, i, s, a, u, d.x, d.y) && 0 <= area(d.NM, d, d.next))
                    return;
                d = d.next
            }
            return 1
        }
    }
    function isEarHashed(t, e, r, n) {
        var i = t.NM
          , a = t
          , o = t.next;
        if (!(0 <= area(i, a, o))) {
            for (var s = i.x, u = a.x, c = o.x, f = i.y, h = a.y, l = o.y, d = s < u ? s < c ? s : c : u < c ? u : c, v = f < h ? f < l ? f : l : h < l ? h : l, g = u < s ? c < s ? s : c : c < u ? u : c, p = h < f ? l < f ? f : l : l < h ? h : l, y = zOrder(d, v, e, r, n), m = zOrder(g, p, e, r, n), b = t.DM, T = t.RM; b && b.z >= y && T && T.z <= m; ) {
                if (b.x >= d && b.x <= g && b.y >= v && b.y <= p && b !== i && b !== o && pointInTriangle(s, f, u, h, c, l, b.x, b.y) && 0 <= area(b.NM, b, b.next))
                    return;
                if (b = b.DM,
                T.x >= d && T.x <= g && T.y >= v && T.y <= p && T !== i && T !== o && pointInTriangle(s, f, u, h, c, l, T.x, T.y) && 0 <= area(T.NM, T, T.next))
                    return;
                T = T.RM
            }
            for (; b && b.z >= y; ) {
                if (b.x >= d && b.x <= g && b.y >= v && b.y <= p && b !== i && b !== o && pointInTriangle(s, f, u, h, c, l, b.x, b.y) && 0 <= area(b.NM, b, b.next))
                    return;
                b = b.DM
            }
            for (; T && T.z <= m; ) {
                if (T.x >= d && T.x <= g && T.y >= v && T.y <= p && T !== i && T !== o && pointInTriangle(s, f, u, h, c, l, T.x, T.y) && 0 <= area(T.NM, T, T.next))
                    return;
                T = T.RM
            }
            return 1
        }
    }
    function cureLocalIntersections(t, e, r) {
        var n = t;
        do {
            var i = n.NM
              , a = n.next.next
        } while (!equals$2(i, a) && intersects$1(i, n, n.next, a) && locallyInside(i, a) && locallyInside(a, i) && (e.push(i.i / r | 0),
        e.push(n.i / r | 0),
        e.push(a.i / r | 0),
        removeNode(n),
        removeNode(n.next),
        n = t = a),
        (n = n.next) !== t);
        return filterPoints(n)
    }
    function splitEarcut(t, e, r, n, i, a) {
        var o = t;
        do {
            for (var s, u = o.next.next; u !== o.NM; ) {
                if (o.i !== u.i && isValidDiagonal(o, u))
                    return s = splitPolygon(o, u),
                    o = filterPoints(o, o.next),
                    s = filterPoints(s, s.next),
                    earcutLinked(o, e, r, n, i, a, 0),
                    earcutLinked(s, e, r, n, i, a, 0);
                u = u.next
            }
        } while ((o = o.next) !== t)
    }
    function eliminateHoles(t, e, r, n) {
        for (var i, a = [], o = 0, s = e.length; o < s; o++)
            (i = linkedList(t, e[o] * n, o < s - 1 ? e[o + 1] * n : t.length, n, !1)) === i.next && (i.LM = !0),
            a.push(getLeftmost(i));
        for (a.sort(compareX),
        o = 0; o < a.length; o++)
            r = eliminateHole(a[o], r);
        return r
    }
    function compareX(t, e) {
        return t.x - e.x
    }
    function eliminateHole(t, e) {
        var r = findHoleBridge(t, e);
        return r ? (filterPoints(t = splitPolygon(r, t), t.next),
        filterPoints(r, r.next)) : e
    }
    function findHoleBridge(t, e) {
        var r, n = e, i = t.x, a = t.y, o = -1 / 0;
        do {
            if (a <= n.y && a >= n.next.y && n.next.y !== n.y) {
                var s = n.x + (a - n.y) * (n.next.x - n.x) / (n.next.y - n.y);
                if (s <= i && o < s && (r = n.x < n.next.x ? n : n.next,
                (o = s) === i))
                    return r
            }
        } while ((n = n.next) !== e);
        if (!r)
            return null;
        for (var u, c = r, f = r.x, h = r.y, l = 1 / 0, n = r; i >= n.x && n.x >= f && i !== n.x && pointInTriangle(a < h ? i : o, a, f, h, a < h ? o : i, a, n.x, n.y) && (u = Math.abs(a - n.y) / (i - n.x),
        locallyInside(n, t)) && (u < l || u === l && (n.x > r.x || n.x === r.x && sectorContainsSector(r, n))) && (r = n,
        l = u),
        (n = n.next) !== c; )
            ;
        return r
    }
    function sectorContainsSector(t, e) {
        return area(t.NM, t, e.NM) < 0 && area(e.next, t, t.next) < 0
    }
    function indexCurve(t, e, r, n) {
        for (var i = t; 0 === i.z && (i.z = zOrder(i.x, i.y, e, r, n)),
        i.DM = i.NM,
        i.RM = i.next,
        (i = i.next) !== t; )
            ;
        i.DM.RM = null,
        i.DM = null,
        sortLinked(i)
    }
    function sortLinked(t) {
        var e, r, n, i, a, o, s, u, c = 1;
        do {
            for (r = t,
            a = t = null,
            o = 0; r; ) {
                for (o++,
                n = r,
                e = s = 0; e < c && (s++,
                n = n.RM); e++)
                    ;
                for (u = c; 0 < s || 0 < u && n; )
                    0 !== s && (0 === u || !n || r.z <= n.z) ? (r = (i = r).RM,
                    s--) : (n = (i = n).RM,
                    u--),
                    a ? a.RM = i : t = i,
                    i.DM = a,
                    a = i;
                r = n
            }
        } while (a.RM = null,
        c *= 2,
        1 < o)
    }
    function zOrder(t, e, r, n, i) {
        return (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = (t - r) * i | 0) | t << 8)) | t << 4)) | t << 2)) | t << 1)) | (1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = (e - n) * i | 0) | e << 8)) | e << 4)) | e << 2)) | e << 1)) << 1
    }
    function getLeftmost(t) {
        for (var e = t, r = t; (e.x < r.x || e.x === r.x && e.y < r.y) && (r = e),
        (e = e.next) !== t; )
            ;
        return r
    }
    function pointInTriangle(t, e, r, n, i, a, o, s) {
        return (t - o) * (a - s) <= (i - o) * (e - s) && (r - o) * (e - s) <= (t - o) * (n - s) && (i - o) * (n - s) <= (r - o) * (a - s)
    }
    function isValidDiagonal(t, e) {
        return t.next.i !== e.i && t.NM.i !== e.i && !intersectsPolygon(t, e) && (locallyInside(t, e) && locallyInside(e, t) && middleInside(t, e) && (area(t.NM, t, e.NM) || area(t, e.NM, e)) || equals$2(t, e) && 0 < area(t.NM, t, t.next) && 0 < area(e.NM, e, e.next))
    }
    function area(t, e, r) {
        return (e.y - t.y) * (r.x - e.x) - (e.x - t.x) * (r.y - e.y)
    }
    function equals$2(t, e) {
        return t.x === e.x && t.y === e.y
    }
    function intersects$1(t, e, r, n) {
        var i = sign(area(t, e, r))
          , a = sign(area(t, e, n))
          , o = sign(area(r, n, t))
          , s = sign(area(r, n, e));
        return i !== a && o !== s || 0 === i && onSegment(t, r, e) || 0 === a && onSegment(t, n, e) || 0 === o && onSegment(r, t, n) || 0 === s && onSegment(r, e, n)
    }
    function onSegment(t, e, r) {
        return e.x <= Math.max(t.x, r.x) && e.x >= Math.min(t.x, r.x) && e.y <= Math.max(t.y, r.y) && e.y >= Math.min(t.y, r.y)
    }
    function sign(t) {
        return 0 < t ? 1 : t < 0 ? -1 : 0
    }
    function intersectsPolygon(t, e) {
        var r = t;
        do {
            if (r.i !== t.i && r.next.i !== t.i && r.i !== e.i && r.next.i !== e.i && intersects$1(r, r.next, t, e))
                return 1
        } while ((r = r.next) !== t)
    }
    function locallyInside(t, e) {
        return area(t.NM, t, t.next) < 0 ? 0 <= area(t, e, t.next) && 0 <= area(t, t.NM, e) : area(t, e, t.NM) < 0 || area(t, t.next, e) < 0
    }
    function middleInside(t, e) {
        for (var r = t, n = !1, i = (t.x + e.x) / 2, a = (t.y + e.y) / 2; r.y > a != r.next.y > a && r.next.y !== r.y && i < (r.next.x - r.x) * (a - r.y) / (r.next.y - r.y) + r.x && (n = !n),
        (r = r.next) !== t; )
            ;
        return n
    }
    function splitPolygon(t, e) {
        var r = new Node(t.i,t.x,t.y)
          , n = new Node(e.i,e.x,e.y)
          , i = t.next
          , a = e.NM;
        return (t.next = e).NM = t,
        (r.next = i).NM = r,
        (n.next = r).NM = n,
        (a.next = n).NM = a,
        n
    }
    function insertNode(t, e, r, n) {
        return t = new Node(t,e,r),
        n ? (t.next = n.next,
        (t.NM = n).next.NM = t,
        n.next = t) : (t.NM = t).next = t,
        t
    }
    function removeNode(t) {
        t.next.NM = t.NM,
        t.NM.next = t.next,
        t.DM && (t.DM.RM = t.RM),
        t.RM && (t.RM.DM = t.DM)
    }
    function Node(t, e, r) {
        this.i = t,
        this.x = e,
        this.y = r,
        this.NM = null,
        this.next = null,
        this.z = 0,
        this.DM = null,
        this.RM = null,
        this.LM = !1
    }
    function signedArea(t, e, r, n) {
        for (var i = 0, a = e, o = r - n; a < r; a += n)
            i += (t[o] - t[a]) * (t[a + 1] + t[o + 1]),
            o = a;
        return i
    }
    earcut.PM = function(t, e, r, n) {
        var i = e && e.length
          , a = i ? e[0] * r : t.length
          , o = Math.abs(signedArea(t, 0, a, r));
        if (i)
            for (var s = 0, u = e.length; s < u; s++) {
                var c = e[s] * r
                  , f = s < u - 1 ? e[s + 1] * r : t.length;
                o -= Math.abs(signedArea(t, c, f, r))
            }
        for (var h = 0, s = 0; s < n.length; s += 3) {
            var l = n[s] * r
              , d = n[s + 1] * r
              , v = n[s + 2] * r;
            h += Math.abs((t[l] - t[v]) * (t[1 + d] - t[1 + l]) - (t[l] - t[d]) * (t[1 + v] - t[1 + l]))
        }
        return 0 === o && 0 === h ? 0 : Math.abs((h - o) / o)
    }
    ,
    earcut.UM = function(t) {
        for (var e = t[0][0].length, r = {
            rp: [],
            BM: [],
            dimensions: e
        }, n = 0, i = 0; i < t.length; i++) {
            for (var a = 0; a < t[i].length; a++)
                for (var o = 0; o < e; o++)
                    r.rp.push(t[i][a][o]);
            0 < i && (n += t[i - 1].length,
            r.BM.push(n))
        }
        return r
    }
    ,
    earcut_1.default = default_1$1;
    var CoreFillBucket = function() {
        function t() {
            this._b = new FillArray,
            this.zM = new FillArray,
            this.uploaded = !1
        }
        return t.prototype.Nx = function(t, e) {
            if (t.length < 6)
                return 0;
            for (var r = this.Qx.length, n = this._b.length, i = earcut_1(t, e), a = 0, o = i.length; a < o; a += 3)
                this.Qx.kb(n + i[a], n + i[a + 1], n + i[a + 2]);
            for (a = 0,
            o = t.length; a < o; a += 2)
                this._b.kb(t[a], t[a + 1]);
            return 0 < (e = 3 * (this.Qx.length - r)) && (this.uploaded = !1),
            e
        }
        ,
        t.prototype.Ew = function(t) {
            if (t.length < 2)
                return 0;
            for (var e = this.qM.length, r = this.zM.length, n = 0, i = t.length; n < i; n += 2)
                this.zM.kb(t[n][0], t[n][1]),
                this.zM.kb(t[n + 1][0], t[n + 1][1]),
                this.qM.kb(r + n, r + n + 1);
            return 0 < (e = 2 * (this.qM.length - e)) && (this.uploaded = !1),
            e
        }
        ,
        t.prototype.destroy = function() {
            this.uploaded = !1,
            this.zs && (this.zs.context.deleteBuffer(this.zs),
            delete this.zs),
            this.Pc && (this.Pc.context.deleteBuffer(this.Pc),
            delete this.Pc),
            this.Ec && (this.Ec.context.deleteBuffer(this.Ec),
            delete this.Ec),
            this.Nc && (this.Nc.context.deleteBuffer(this.Nc),
            delete this.Nc)
        }
        ,
        t
    }()
      , PolygonBucket = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.Qx = new TriangleIndexArrayUint,
            t.qM = new LinesIndexArrayUint,
            t
        }
        return __extends(t, e),
        t.prototype.upload = function(t, e) {
            void 0 === e && (e = !1),
            this.uploaded || (this.destroy(),
            this.uploaded = !0,
            this.zs = t.fe(this._b.Mb, FillArray.Rb),
            this.Pc = t.ve(this.Qx.UI),
            this.Ec = t.fe(this.zM.Mb, LinesIndexArray.Rb),
            this.Nc = t.ve(this.qM.UI),
            e && (delete this.Qx,
            delete this._b,
            delete this.zM,
            delete this.qM))
        }
        ,
        t.prototype.reset = function() {
            this._b = new FillArray,
            this.zM = new FillArray,
            this.Qx = new TriangleIndexArrayUint,
            this.qM = new LinesIndexArrayUint,
            this.uploaded = !1
        }
        ,
        t
    }(CoreFillBucket)
      , FaceTextureCoord = {
        empty: fromValues$3(-1, -1),
        Gm: fromValues$3(1, 1),
        qm: fromValues$3(0, 1),
        Nm: fromValues$3(1, 0),
        Um: fromValues$3(0, 0)
    }
      , MaxInfo = {
        Gm: create$3(),
        qm: create$3(),
        Nm: create$3(),
        Um: create$3()
    }
      , floorHeight = 6
      , FillExtrusionBucket = function() {
        function t() {
            this._b = new FillExtrusionArray,
            this.uploaded = !1
        }
        return t.prototype.tz = function(t, e, r) {
            void 0 === e && (e = 100);
            for (var n = [], i = [], a = t.length, o = 0; o < a; o += 2)
                i[s = o / 2 * 3] = t[o],
                i[s + 1] = t[o + 1],
                i[s + 2] = 0;
            for (var s, o = 0; o < a; o += 2)
                n[s = o / 2 * 3] = t[o],
                n[s + 1] = t[o + 1],
                n[s + 2] = e;
            return this.Nx(n, e, r) + this.RI(i, n, r)
        }
        ,
        t.prototype.RI = function(t, e, r) {
            var n = e.length
              , i = e[2]
              , a = this._b.length;
            t = t.concat(t.slice(0, 3)),
            e = e.concat(e.slice(0, 3));
            for (var o = 0; o < n - 3; o += 3) {
                var s = Math.abs(t[o] - t[o + 3])
                  , u = Math.abs(t[o + 1] - t[o + 4])
                  , c = Math.round(i)
                  , s = Math.round(Math.sqrt(Math.pow(s, 2) + Math.pow(u, 2)))
                  , s = (0 < (u = fromValues$3(Math.ceil(s / floorHeight), Math.round(c / floorHeight)))[1] ? (mul(MaxInfo.qm, FaceTextureCoord.qm, u),
                mul(MaxInfo.Gm, FaceTextureCoord.Gm, u),
                mul(MaxInfo.Um, FaceTextureCoord.Um, u),
                mul(MaxInfo.Nm, FaceTextureCoord.Nm, u)) : (set$1(MaxInfo.qm, -1, -1),
                set$1(MaxInfo.Gm, -1, -1),
                set$1(MaxInfo.Um, -1, -1),
                set$1(MaxInfo.Nm, -1, -1)),
                this.zI(t.slice(o, o + 3), t.slice(o + 3, o + 6), e.slice(o + 3, o + 6)));
                this._b.kb(t[o], t[o + 1], t[o + 2], i, s, MaxInfo.qm),
                this._b.kb(e[o + 3], e[o + 4], e[o + 5], i, s, MaxInfo.Nm),
                this._b.kb(t[o + 3], t[o + 4], t[o + 5], i, s, MaxInfo.Gm),
                this._b.kb(t[o], t[o + 1], t[o + 2], i, s, MaxInfo.qm),
                this._b.kb(e[o], e[o + 1], e[o + 2], i, s, MaxInfo.Um),
                this._b.kb(e[o + 3], e[o + 4], e[o + 5], i, s, MaxInfo.Nm)
            }
            return 0 < (a = this._b.length - a) && (this.uploaded = !1),
            a
        }
        ,
        t.prototype.Nx = function(t, e, r) {
            if (t.length < 9)
                return 0;
            for (var n = this._b.length, i = earcut_1(t, r, 3), a = i.length - 1; 0 <= a; a--) {
                var o = 3 * i[a];
                this._b.kb(t[o], t[1 + o], t[2 + o], e, fromValues$1(0, 0, 1), FaceTextureCoord.empty)
            }
            return 0 < (r = this._b.length - n) && (this.uploaded = !1),
            r
        }
        ,
        t.prototype.zI = function(t, e, r) {
            var t = fromValues$1(t[0], t[1], t[2])
              , e = fromValues$1(e[0], e[1], e[2])
              , r = fromValues$1(r[0], r[1], r[2])
              , n = create$1()
              , i = create$1()
              , a = create$1();
            return sub(i, t, e),
            sub(a, r, e),
            cross(n, i, a),
            n
        }
        ,
        t.prototype.upload = function(t, e) {
            void 0 === e && (e = !1),
            this.uploaded || (this.destroy(),
            this.uploaded = !0,
            this.zs = t.fe(this._b.Mb, FillExtrusionArray.Rb),
            e && delete this._b)
        }
        ,
        t.prototype.destroy = function() {
            this.uploaded = !1,
            this.zs && (this.zs.context.deleteBuffer(this.zs),
            delete this.zs),
            this.Pc && (this.Pc.context.deleteBuffer(this.Pc),
            delete this.Pc)
        }
        ,
        t.prototype.reset = function() {
            this._b = new FillExtrusionArray,
            this.uploaded = !1
        }
        ,
        t
    }()
      , StyleParser = function() {
        function b(t) {
            this.TY = t,
            this.CI = new AdaptorMap,
            this.Ve = null,
            this.RV = null,
            this.bN = null
        }
        return b.Wb = function(t) {
            return {
                style: JSON.stringify(t.styles),
                TY: t.TY
            }
        }
        ,
        b.Gb = function(t) {
            var e = new b(t.TY);
            return e.jY(JSON.parse(t.style)),
            e
        }
        ,
        b.mV = function(t) {
            var e, r = {};
            for (e in t)
                if (t.hasOwnProperty(e)) {
                    var n = t[e]
                      , i = void 0;
                    switch (e[0]) {
                    case "1":
                        i = b.Xe;
                        break;
                    case "2":
                        i = b.rn,
                        n.type = "road";
                        break;
                    case "3":
                        i = b.cn;
                        break;
                    case "4":
                        i = b.un;
                        break;
                    case "5":
                        i = b.ln,
                        n.type = "building"
                    }
                    if (i) {
                        for (var o = (a = n.key)[0], a = a[1], s = (void 0 === r[o] && (r[o] = {}),
                        (r[o][a] = n).browserStyle), u = 0, c = s.length; u < c; u += 1) {
                            var f = s[u];
                            if (s[u] = i(f),
                            void 0 === n.z)
                                switch (e[0]) {
                                case "2":
                                    n.z = (s[u] ? s[u][0] : n).z;
                                    break;
                                case "1":
                                case "3":
                                case "4":
                                case "5":
                                    n.z = s[u].z;
                                    break;
                                default:
                                    n.z = -1
                                }
                        }
                        b.Sn(n)
                    } else
                        delete t[e]
                }
            return r
        }
        ,
        b.$V = function(t) {
            var e, r = {};
            for (e in t)
                if (t.hasOwnProperty(e)) {
                    var n = t[e]
                      , i = void 0;
                    switch (e[0]) {
                    case "1":
                        i = b.Xe;
                        break;
                    case "2":
                        i = b.rn,
                        n.type = "road";
                        break;
                    case "3":
                        i = b.cn;
                        break;
                    case "4":
                        i = b.un;
                        break;
                    case "5":
                        i = b.ln,
                        n.type = "building"
                    }
                    if (i) {
                        for (var o = (a = e.split(":"))[0], a = a[1], s = (void 0 === r[o] && (r[o] = {}),
                        (r[o][a] = n).browserStyle), u = 0, c = s.length; u < c; u += 1) {
                            var f = s[u];
                            if (s[u] = i(f),
                            void 0 === n.z)
                                switch (e[0]) {
                                case "2":
                                    n.z = (s[u] ? s[u][0] : n).z;
                                    break;
                                case "1":
                                case "3":
                                case "4":
                                case "5":
                                    n.z = s[u].z;
                                    break;
                                default:
                                    n.z = -1
                                }
                        }
                        b.Sn(n)
                    } else
                        delete t[e]
                }
            return r
        }
        ,
        b.SZ = function(t) {
            for (var e = t.stylemaps, r = e.length, n = {}, i = 0; i < r; i++) {
                for (var a = e[i], o = a.key[0], s = a.key[1], u = {}, c = (void 0 === n[o] && (n[o] = {}),
                (n[o][s] = u).browserStyle = a.browserStyle,
                {}), f = a.levelStyleMapping.length, h = 0; h < f; h += 2) {
                    var l = a.levelStyleMapping[h]
                      , d = a.levelStyleMapping[h + 1];
                    c[l] = d
                }
                u.levelStyleMapping = c;
                var v = void 0;
                switch (o[0]) {
                case "1":
                    v = b.Xe;
                    break;
                case "2":
                    v = b.rn,
                    u.type = "road";
                    break;
                case "3":
                    v = b.cn;
                    break;
                case "4":
                    v = b.un;
                    break;
                case "5":
                    v = b.ln,
                    u.type = "building"
                }
                for (var g = u.browserStyle, p = 0, y = g.length; p < y; p += 1) {
                    var m = g[p];
                    if (g[p] = v(m),
                    void 0 === u.z)
                        switch (o[0]) {
                        case "2":
                            u.z = (g[p] ? g[p][0] : u).z;
                            break;
                        case "1":
                        case "3":
                        case "4":
                        case "5":
                            u.z = g[p].z;
                            break;
                        default:
                            u.z = -1
                        }
                }
                b.Sn(u)
            }
            return n
        }
        ,
        b.Je = function(t) {
            var e;
            return t && "0" !== t ? (8 === t.length && (t = t.slice(2) + t.slice(0, 2)),
            this.yQ && this.yQ[t] ? Color.create(this.yQ[t]) : (e = Color.create(t),
            this.yQ || (this.yQ = {}),
            this.yQ[t] || (this.yQ[t] = e.rgba.slice(0)),
            e)) : null
        }
        ,
        b.Sn = function(t) {
            if (void 0 !== t.levelStyleMapping[3] && (t.levelStyleMapping[2] = t.levelStyleMapping[3]),
            void 0 !== t.levelStyleMapping[20] && (t.levelStyleMapping[21] = t.levelStyleMapping[20],
            t.levelStyleMapping[22] = t.levelStyleMapping[20],
            t.levelStyleMapping[23] = t.levelStyleMapping[20],
            t.levelStyleMapping[24] = t.levelStyleMapping[20],
            t.levelStyleMapping[25] = t.levelStyleMapping[20],
            t.levelStyleMapping[26] = t.levelStyleMapping[20],
            t.levelStyleMapping[27] = t.levelStyleMapping[20],
            t.levelStyleMapping[28] = t.levelStyleMapping[20],
            t.levelStyleMapping[29] = t.levelStyleMapping[20],
            t.levelStyleMapping[30] = t.levelStyleMapping[20]),
            "building" === t.type && t.levelStyleMapping && (delete t.levelStyleMapping[15],
            delete t.levelStyleMapping[16]),
            "road" === t.type && void 0 !== t.levelStyleMapping[20]) {
                var e = t.browserStyle
                  , r = t.levelStyleMapping[20]
                  , n = e[r];
                if (n)
                    for (var i = 1; i <= 10; i++) {
                        var a = [];
                        a.push(exports.Ln({}, n[0])),
                        a.push(exports.Ln({}, n[1])),
                        a[0].roadWidth = a[0].roadWidth * Math.pow(2, i),
                        a[0].borderWidth = a[0].borderWidth * Math.pow(2, i),
                        t.browserStyle.push(a),
                        t.levelStyleMapping[i + 20] = r + i
                    }
            }
        }
        ,
        b.prototype._Q = function() {
            return Boolean(this.styles)
        }
        ,
        b.prototype.jY = function(t) {
            this.styles = t
        }
        ,
        b.prototype.clearStyleCache = function() {
            this.EI = -1,
            this.CI.clear()
        }
        ,
        b.prototype.setStyle = function(t) {
            this.Ve = t,
            this.clearStyleCache()
        }
        ,
        b.prototype.EY = function(t) {
            this.RV = t
        }
        ,
        b.prototype.MS = function(t) {
            if (this.RV)
                return this.RV[t]
        }
        ,
        b.prototype.kF = function(t) {
            this.bN = t
        }
        ,
        b.prototype.dn = function(t, e, r) {
            if (this.styles)
                return this.SI(t, e, r) ? this.CI.get((t << 16) + e) : (r = this.jk(t, e, r) ? this.Ak(t, e, r, this.Ve) || null : this.kk(t, e, r) || null,
                this.CI.set((t << 16) + e, r),
                r)
        }
        ,
        b.prototype.MF = function(t, e) {
            var r = this.bN;
            if (!r || !r[t])
                return null;
            if (r[t].styles && r[t].styles.color) {
                var n, i, e = Util.getOptimalZoom(e), a = {};
                for (n in r[t].styles.color.nodesObj)
                    r[t].styles.color.nodesObj.hasOwnProperty(n) && (a[(i = r[t].styles.color.nodesObj[n]).zoom] = i.value);
                return a[e = this._k(a, e)] ? Util.Hex2Rgba(a[e]) : null
            }
            return r[t].color ? (e = r[t].color,
            Util.Hex2Rgba(e)) : void 0
        }
        ,
        b.prototype.nX = function(t, e, r, n) {
            var i = this.Ve;
            return i && i[t] && i[t][e] ? (i = i[t][e]).styles && i.styles[r] ? (t = Util.getOptimalZoom(n),
            (n = this._k(i.styles[r].nodesObj, t)) && i.styles[r].nodesObj[n] ? i.styles[r].nodesObj[n] : null) : "visible" === r || i[r] && (i.visible || "3" !== e) ? i[r] : void 0 : null
        }
        ,
        b.prototype.Ok = function(t, e, r) {
            return void 0 !== this.styles[t] && (t = this.styles[t][e]) && void 0 !== (e = t.levelStyleMapping[r]) ? t.browserStyle[e] : null
        }
        ,
        b.prototype.xk = function(t, e, r) {
            if (void 0 === this.styles[t])
                return null;
            if (void 0 === this.styles[t][e])
                return null;
            if (void 0 === this.styles[t][e].levelStyleMapping)
                return null;
            if (void 0 === this.styles[t][e].browserStyle)
                return null;
            var n = this.styles[t][e].levelStyleMapping
              , t = this.styles[t][e].browserStyle
              , i = Math.floor(r);
            if (i === (e = Math.ceil(r)))
                return (a = t[n[i]]) ? (g = l = cloneDeep(a),
                l instanceof Array && (g = l[0]),
                l) : null;
            var a = r - i < .8 ? i : e
              , o = t[n[i]]
              , t = t[n[e]];
            if ((o || t) && (o || a !== i) && (!o || t || a !== e) && (o || !t || i !== a)) {
                if (!o && t) {
                    for (var s, u, c = l = cloneDeep(t), f = (l instanceof Array && (c = l[0]),
                    Object.keys(c)), h = 0; h < f.length; h++)
                        -1 < (d = f[h]).indexOf("Color") && c[d] && c[d].rgba ? (u = (r - i - .8) / .2,
                        s = Math.floor(c[d].rgba[3] * u),
                        c[d].rgba[3] = s) : -1 < d.indexOf("Width") && (c[d] = c[d] * (u = (r - i - .8) / .2));
                    return l
                }
                if (o && t) {
                    for (var l, d, v, g = l = cloneDeep(o), c = t, f = (l instanceof Array && (g = l[0]),
                    l instanceof Array && (c = t[0]),
                    Object.keys(g)), h = 0; h < f.length; h++)
                        -1 < (d = f[h]).indexOf("Width") && (v = (r - i) * (c[d] - g[d]) + g[d],
                        g[d] = v);
                    return l
                }
                return o && !t ? (g = l = cloneDeep(o),
                l instanceof Array && (g = l[0]),
                l) : null
            }
        }
        ,
        b.prototype.Ik = function(t, e, r) {
            var n = [];
            return n[0] = t[0] + (e[0] - t[0]) * r,
            n[1] = t[1] + (e[1] - t[1]) * r,
            n[2] = t[2] + (e[2] - t[2]) * r,
            n[3] = t[3] + (e[3] - t[3]) * r,
            n
        }
        ,
        b.prototype.kk = function(t, e, r) {
            var n = t.toString()[0];
            return "1" === n || "4" === n ? (n = Util.getOptimalZoom(r),
            this.Ok(t, e, n)) : this.xk(t, e, r)
        }
        ,
        b.prototype.Ak = function(t, e, r, n) {
            var i = r
              , a = n[t][e] || n[t].all
              , o = null;
            if (a.styles) {
                var s = Util.getOptimalZoom(r);
                if (a.styles.visible && (n = this._k(a.styles.visible.nodesObj, s)) && void 0 !== (n = a.styles.visible.nodesObj[n]) && !1 === n)
                    return null;
                for (var u = (b = cloneDeep(this.styles[t][e])).levelStyleMapping, c = b.browserStyle, f = Object.keys(a.styles), h = 0; h < f.length; h++) {
                    var l = f[h]
                      , d = a.styles[l]
                      , v = null;
                    if (d.transitional && "linear" === d.transitional) {
                        var g, p = this.Tk(d.nodesObj, r);
                        if (!p || !p[0])
                            continue;
                        if (!(i = p[0]))
                            continue;
                        if (void 0 === (g = u[s]))
                            continue;
                        o = c[g],
                        1 === p.length ? v = d.nodesObj[i] : "color" === l && (v = this.Fk(p, d.nodesObj, r))
                    } else {
                        if (!(i = this._k(d.nodesObj, s)))
                            continue;
                        if (void 0 === (g = u[s]))
                            continue;
                        o = c[g],
                        v = d.nodesObj[i]
                    }
                    if (!o)
                        return null;
                    var y = t.toString()[0]
                      , m = this.uP(a, s);
                    if ("1" === y) {
                        if (!m)
                            return null;
                        this.NI(l, v, o, t, e)
                    } else
                        "2" === y ? (this.Sk(l, v, o),
                        !m && o && o[1] && (o[1] = null)) : "4" === y ? this.LI(l, v, o) : this.Ck(l, v, o)
                }
            } else {
                if (void 0 !== a.visible && !1 === a.visible)
                    return null;
                if (void 0 === (g = (u = this.styles[t][e].levelStyleMapping)[i = Util.getOptimalZoom(i)]))
                    return null;
                if (!this.styles[t][e].browserStyle[g])
                    return null;
                for (var b, o = (c = (b = cloneDeep(this.styles[t][e])).browserStyle)[g], f = Object.keys(a), m = this.uP(a, i), h = 0; h < f.length; h++) {
                    if (l = f[h],
                    !o)
                        return null;
                    if ("1" === (y = t.toString()[0])) {
                        if (!m)
                            return null;
                        this.NI(l, a[l], o, t, e)
                    } else
                        "2" === y ? (this.Sk(l, a[l], o),
                        !m && o && o[1] && (o[1] = null)) : "4" === y ? this.LI(l, a[l], o) : this.Ck(l, a[l], o)
                }
            }
            return o
        }
        ,
        b.prototype.mn = function(t, e) {
            return void 0 === this.styles[t] ? null : (t = this.styles[t][e]) ? (e = t.levelStyleMapping || {},
            t = Object.keys(e),
            [parseInt(t[0], 10), parseInt(t[t.length - 1], 10)]) : []
        }
        ,
        b.prototype.Lw = function(t, e) {
            return void 0 !== this.styles[t] && (t = this.styles[t][e]) ? t.z : null
        }
        ,
        b.prototype.mW = function(t, e, r) {
            return 2 === Math.floor(t / 1e4) && (t = this.xk(t, e, r)) && t[0] ? (e = ["butt", "butt"],
            -1 < (r = t[0]).roadStyle.indexOf("roundcap") ? e[0] = "round" : -1 < r.roadStyle.indexOf("squarecap") && (e[0] = "square"),
            -1 < r.borderStyle.indexOf("roundcap") ? e[1] = "round" : -1 < r.borderStyle.indexOf("squarecap") && (e[1] = "square"),
            e) : defaultCap
        }
        ,
        b.prototype.destroy = function() {
            this.styles && (this.styles = {})
        }
        ,
        b.prototype.uP = function(t, e) {
            var r = !0;
            return t.styles && t.styles.showLabel ? (e = this._k(t.styles.showLabel.nodesObj, e),
            void 0 !== (e = t.styles.showLabel.nodesObj[e]) && !1 === e && (r = !1)) : void 0 !== t.showLabel && !1 === t.showLabel && (r = !1),
            r
        }
        ,
        b.prototype.SI = function(t, e, r) {
            return r = this.TY ? Math.floor(r) : Math.floor(r * (16.8 <= r ? 100 : 10)),
            this.EI !== r && (this.EI = r,
            this.CI.clear()),
            this.CI.has((t << 16) + e)
        }
        ,
        b.prototype.jk = function(t, e, r) {
            return !!this.Ve && !!this.Ve[t] && !(!this.Ve[t][e] && !this.Ve[t].all || !this.styles || !this.styles[t] || !this.styles[t][e])
        }
        ,
        b.prototype.Fk = function(t, e, r) {
            var n = Util.Hex2Rgba(e[t[0]])
              , e = Util.Hex2Rgba(e[t[1]])
              , r = (r - t[0]) / (t[1] - t[0]);
            return [Math.floor(n[0] + r * (e[0] - n[0])), Math.floor(n[1] + r * (e[1] - n[1])), Math.floor(n[2] + r * (e[2] - n[2])), Math.floor(n[3] + r * (e[3] - n[3]))]
        }
        ,
        b.prototype.UV = function(t) {
            for (var e = {}, r = 0; r < t.length; r++) {
                t[r];
                var n = t[r].zoom
                  , i = t[r].value;
                e[n] = i
            }
            return e
        }
        ,
        b.prototype.Tk = function(t, e) {
            var r = [];
            if (t[e])
                r.push(e);
            else {
                for (var n = !0, i = Math.floor(e); n && 0 < i; ) {
                    if (t[i]) {
                        r.push(i),
                        n = !1;
                        break
                    }
                    i--
                }
                for (i = Math.ceil(e),
                n = !0; n && i < 25; ) {
                    if (t[i]) {
                        r.push(i),
                        n = !1;
                        break
                    }
                    i++
                }
            }
            return r
        }
        ,
        b.prototype._k = function(t, e) {
            if (!t)
                return null;
            if (!isUndefined$1(t[e]))
                return e;
            for (var r = !0, n = e; r && 0 < n; )
                if (t[--n] || !1 === t[n] || "" === t[n]) {
                    r = !1;
                    break
                }
            if (!r)
                return n;
            for (n = e; r && n < 25; )
                if (t[++n] || !1 === t[n] || "" === t[n]) {
                    r = !1;
                    break
                }
            return r ? null : n
        }
        ,
        b.prototype.Ck = function(t, e, r) {
            var n = null;
            switch (t) {
            case "color":
            case "fillColor":
                n = e,
                Array.isArray(e) || (n = Util.Hex2Rgba(e)),
                r.faceColor || (r.faceColor = new Color(n)),
                r.faceColor.rgba = n;
                break;
            case "fontSize":
                r.fontSize = e;
                break;
            case "texture":
                r.texture = e ? AMap.getConfig().protocol + "://" + e : "";
                break;
            case "backgroundColor":
                n = Util.Hex2Rgba(e),
                r.holoColor && (r.holoColor.rgba = n);
                break;
            case "strokeColor":
                n = Util.Hex2Rgba(e),
                r.borderColor || (r.borderColor = new Color(n)),
                r.borderColor.rgba = n;
                break;
            case "showIcon":
                !1 === e && r.iconID && (r.iconID = "0")
            }
        }
        ,
        b.prototype.LI = function(t, e, r) {
            var n = null;
            switch (t) {
            case "textFillColor":
                n = e,
                Array.isArray(e) || (n = Util.Hex2Rgba(e)),
                r.faceColor || (r.faceColor = new Color(n)),
                r.faceColor.rgba = n;
                break;
            case "fontSize":
                r.fontSize = e;
                break;
            case "backgroundColor":
                n = Util.Hex2Rgba(e),
                r.holoColor && (r.holoColor.rgba = n);
                break;
            case "textStrokeColor":
                n = Util.Hex2Rgba(e),
                r.borderColor || (r.borderColor = new Color(n)),
                r.borderColor.rgba = n;
                break;
            case "showIcon":
                !1 === e && r.iconID && (r.iconID = "0");
                break;
            case "showLabel":
                r.showText = e ? 1 : 0
            }
        }
        ,
        b.prototype.NI = function(t, e, r, n, i) {
            var a = null;
            switch (t) {
            case "showIcon":
                !1 === e && r.iconID && (r.iconID = "0");
                break;
            case "textFillColor":
                a = e,
                Array.isArray(e) || (a = Util.Hex2Rgba(e)),
                r.faceColor || (r.faceColor = new Color(a)),
                r.faceColor.rgba = a;
                break;
            case "fontSize":
                r.fontSize = e;
                break;
            case "backgroundColor":
                a = Util.Hex2Rgba(e),
                r.holoColor ? r.holoColor.rgba = a : 10002 !== n || 8 !== i && 37 !== i || (r.holoColor = new Color(a));
                break;
            case "textStrokeColor":
                a = Util.Hex2Rgba(e),
                r.borderColor || (r.borderColor = new Color(a)),
                r.borderColor.rgba = a;
                break;
            case "sel-highlight":
                r["sel-highlight"] = !0 === e;
                break;
            case "sel-textFillColor":
                a = Util.Hex2Rgba(e),
                r["sel-textFillColor"] = map(a, function(t) {
                    return t / 255
                });
                break;
            case "sel-textStrokeColor":
                a = Util.Hex2Rgba(e),
                r["sel-textStrokeColor"] = map(a, function(t) {
                    return t / 255
                });
                break;
            case "label-bg":
                r["label-bg"] = !0 === e;
                break;
            case "label-bgColor":
                a = Util.Hex2Rgba(e),
                r.holoColor ? r.holoColor.rgba = a : 10002 !== n || 8 !== i && 37 !== i || (r.holoColor = new Color(a));
                break;
            case "showLabel":
                r.showText = e ? 1 : 0
            }
        }
        ,
        b.prototype.Sk = function(t, e, r) {
            var n, i = null;
            switch (t) {
            case "color":
            case "fillColor":
                i = Util.Hex2Rgba(e),
                r[0] && (r[0].roadColor || (r[0].roadColor = new Color(i)),
                r[0].roadColor.rgba = i);
                break;
            case "fillOpacity":
                r[0] && r[0].roadColor && r[0].roadColor.rgba && (n = r[0].roadColor.rgba,
                i = Util.Opacity2Rgba(e, n),
                r[0].roadColor.rgba = i);
                break;
            case "fillWidth":
                r[0] && (r[0].roadWidth = e);
                break;
            case "strokeColor":
                i = Util.Hex2Rgba(e),
                r[0] && (r[0].borderColor || (r[0].borderColor = new Color(i)),
                r[0].borderColor.rgba = i);
                break;
            case "strokeWidth":
                r[0] && (r[0].borderWidth = e);
                break;
            case "textFillColor":
                r[1] && (i = Util.Hex2Rgba(e),
                r[1].faceColor || (r[1].faceColor = new Color(i)),
                r[1].faceColor.rgba = i);
                break;
            case "textStrokeColor":
                r[1] && (i = Util.Hex2Rgba(e),
                r[1].borderColor || (r[1].borderColor = new Color(i)),
                r[1].borderColor.rgba = i);
                break;
            case "fontSize":
                r[1] && (r[1].fontSize = e);
                break;
            case "showLabel":
                r.showText = e ? 1 : 0
            }
        }
        ,
        b.Xe = function(t) {
            var t = t.split("&")
              , e = {};
            return e.iconID = t[0],
            e.fontSize = parseInt(t[1], 10),
            e.faceColor = b.Je(t[2]),
            e.borderColor = b.Je(t[3]),
            e.holoColor = b.Je(t[4]),
            e.showMode = parseInt(t[6], 10),
            e.showText = 2 === e.showMode ? 0 : 1,
            e.forceShow = parseInt(t[7], 10),
            e.clickEnable = parseInt(t[8], 10),
            e.xOffset = parseInt(t[9], 10),
            e.yOffset = parseInt(t[10], 10),
            e.iconFile = t[5],
            e
        }
        ,
        b.rn = function(t) {
            var e = (t = t.split("|"))[0].split("&")
              , r = {}
              , e = (t[0] ? (r.roadWidth = parseInt(e[0], 10),
            r.roadColor = b.Je(e[1]),
            r.roadStyle = e[2] || "",
            r.borderWidth = parseInt(e[3], 10),
            r.borderColor = b.Je(e[4]),
            r.borderStyle = e[5] || "",
            r.z = parseInt(e[6], 10),
            r.roadStyle && r.roadStyle.indexOf && (0 === r.roadStyle.indexOf("dash") ? (r.roadDash = r.roadStyle.substring(4).slice(1, -1).split(","),
            r.roadDash = map(r.roadDash, function(t) {
                return parseInt(t, 10)
            }),
            2 === r.roadDash.length && (e = r.roadDash).push.apply(e, r.roadDash)) : 0 < r.roadStyle.indexOf("railway") || r.roadStyle.indexOf("dash_crewel")),
            r.borderStyle && r.borderStyle.indexOf && (0 === r.borderStyle.indexOf("dash") ? (r.borderDash = r.borderStyle.substring(4).slice(1, -1).split(","),
            r.borderDash = map(r.borderDash, function(t) {
                return parseInt(t, 10)
            }),
            2 === r.borderDash.length && (e = r.borderDash).push.apply(e, r.borderDash)) : 0 < r.borderStyle.indexOf("railway") || r.borderStyle.indexOf("dash_crewel"))) : (r.roadWidth = 0,
            r.roadColor = b.Je("00000000"),
            r.roadStyle = "",
            r.borderWidth = 0,
            r.borderColor = b.Je("00000000"),
            r.borderStyle = "",
            r.z = 0),
            {});
            return t[1] && (t = t[1].split("&"),
            e.iconID = "",
            e.fontSize = parseInt(t[1], 10),
            e.faceColor = b.Je(t[2]),
            e.borderColor = b.Je(t[3]),
            e.z = parseInt(t[4], 10)),
            [r, e]
        }
        ,
        b.ln = function(t) {
            var t = t.split("&")
              , e = {};
            return e.faceColor = b.Je(t[0]),
            e.borderWidth = parseInt(t[1], 10),
            e.borderColor = b.Je(t[2]),
            e.wallColor1 = b.Je(t[3]),
            e.wallColor2 = b.Je(t[4]),
            e.opacity = parseFloat(t[5]),
            e.z = parseInt(t[6], 10),
            e
        }
        ,
        b.un = function(t) {
            var t = t.split("&")
              , e = {};
            return e.iconID = t[0],
            e.fontSize = parseInt(t[1], 10),
            e.faceColor = b.Je(t[2]),
            e.borderColor = b.Je(t[3]),
            e.holoColor = null,
            e.z = parseInt(t[5], 10),
            e
        }
        ,
        b.cn = function(t) {
            var t = t.split("&")
              , e = {};
            return e.faceColor = b.Je(t[0]),
            e.borderWidth = 0,
            e.borderColor = null,
            e.z = parseInt(t[3], 10),
            e
        }
        ,
        b
    }()
      , NebulaSegements = function() {
        function t() {
            this.jc = [],
            this.GM = -1,
            this.HM = -1,
            this.VM = 0,
            this.WM = new LineSegement(-1,-1,-1,-1,-1)
        }
        return t.prototype.add = function(t, e, r, n, i, a, o, s) {
            this.WM.eT(t, e, i, n) && a === this.WM.bz && o + "" == this.WM.roofColor + "" && s + "" == this.WM.wallColor + "" || (this.GM = t,
            this.HM = e,
            this.VM += this.WM ? this.WM.length : 0,
            this.WM = new LineSegement(t,e,this.VM,n,i,a,o,s),
            this.jc.push(this.WM)),
            this.WM.add(r)
        }
        ,
        t.prototype.reset = function() {
            this.WM = new LineSegement(-1,-1,-1,-1,-1)
        }
        ,
        t
    }()
      , LineSegement = function() {
        function t(t, e, r, n, i, a, o, s) {
            this.mainkey = t,
            this.subkey = e,
            this.offset = r,
            this.minzoom = n,
            this.maxzoom = i,
            this.bz = a,
            this.roofColor = o,
            this.wallColor = s,
            this.length = 0
        }
        return t.prototype.add = function(t) {
            this.length += t
        }
        ,
        t.prototype.eT = function(t, e, r, n) {
            return this.mainkey === t && this.subkey === e && this.maxzoom === r && this.minzoom === n
        }
        ,
        t
    }()
      , PolygonSegements = function() {
        function t() {
            this.jc = [],
            this.VM = 0
        }
        return t.prototype.add = function(t) {
            this.jc.push({
                length: t,
                offset: this.VM
            }),
            this.VM += t
        }
        ,
        t.prototype.reset = function() {
            this.jc = [],
            this.VM = 0
        }
        ,
        t.prototype.destroy = function() {
            this.jc && 0 < this.jc.length && (this.jc = [])
        }
        ,
        t
    }()
      , VectorTileFeature = function(t, e, r, n, i) {
        this.properties = {},
        this.extent = r,
        this.type = 0,
        this.fA = t,
        this.hA = -1,
        this.cA = n,
        this.vA = i,
        t.nw(readFeature, this, e)
    };
    function readFeature(t, e, r) {
        1 === t ? e.id = r.ow() : 2 === t ? readTag(r, e) : 3 === t ? e.type = r.ow() : 4 === t && (e.hA = r.pos)
    }
    function readTag(t, e) {
        for (var r = t.ow() + t.pos; t.pos < r; ) {
            var n = e.cA[t.ow()]
              , i = e.vA[t.ow()];
            e.properties[n] = i
        }
    }
    function classifyRings(t) {
        var e = t.length;
        if (e <= 1)
            return [t];
        for (var r, n = [], i = [], a = 0; a < e; a++) {
            var o = signedArea$1(t[a]);
            0 !== o && ((r = void 0 === r ? o < 0 : r) === o < 0 ? (i && n.push(i),
            i = [t[a]]) : i.push(t[a]))
        }
        return i && n.push(i),
        n
    }
    function signedArea$1(t) {
        for (var e, r, n = 0, i = 0, a = t.length, o = a - 1; i < a; o = i++)
            e = t[i],
            n += ((r = t[o]).x - e.x) * (e.y + r.y);
        return n
    }
    VectorTileFeature.types = ["Unknown", "Point", "LineString", "Polygon"],
    VectorTileFeature.prototype.Dw = function() {
        for (var t, e = this.fA, r = (e.pos = this.hA,
        e.ow() + e.pos), n = 1, i = 0, a = 0, o = 0, s = [], u = []; e.pos < r; )
            if (i <= 0 && (n = 7 & (t = e.ow()),
            i = t >> 3),
            i--,
            1 === n || 2 === n)
                a += e.lA(),
                o += e.lA(),
                1 === n && (u && 0 < u.length && s.push(u),
                u = []),
                u.push([a, o]);
            else {
                if (7 !== n)
                    throw new Error("unknown command " + n);
                u && u.push([u[0][0], u[0][1]])
            }
        return u && 0 < u.length && s.push(u),
        this.lines = s
    }
    ,
    VectorTileFeature.prototype.Ro = function() {
        for (var t, e = this.fA, r = (e.pos = this.hA,
        e.ow() + e.pos), n = 1, i = 0, a = 0, o = 0, s = 1 / 0, u = -1 / 0, c = 1 / 0, f = -1 / 0; e.pos < r; )
            if (i <= 0 && (n = 7 & (t = e.ow()),
            i = t >> 3),
            i--,
            1 === n || 2 === n)
                (a += e.lA()) < s && (s = a),
                u < a && (u = a),
                (o += e.lA()) < c && (c = o),
                f < o && (f = o);
            else if (7 !== n)
                throw new Error("unknown command " + n);
        return [s, c, u, f]
    }
    ,
    VectorTileFeature.prototype.dA = function(t, e, r) {
        var n, i = this.extent * Math.pow(2, r), a = this.extent * t, o = this.extent * e, s = this.Dw(), r = VectorTileFeature.types[this.type];
        function u(t) {
            for (var e = 0; e < t.length; e++) {
                var r = t[e]
                  , n = 180 - 360 * (r.y + o) / i;
                t[e] = [360 * (r.x + a) / i - 180, 360 / Math.PI * Math.atan(Math.exp(n * Math.PI / 180)) - 90]
            }
        }
        switch (this.type) {
        case 1:
            for (var c = [], f = 0; f < s.length; f++)
                c[f] = s[f][0];
            u(s = c);
            break;
        case 2:
            for (f = 0; f < s.length; f++)
                u(s[f]);
            break;
        case 3:
            for (s = classifyRings(s),
            f = 0; f < s.length; f++)
                for (n = 0; n < s[f].length; n++)
                    u(s[f][n])
        }
        return 1 === s.length ? s = s[0] : r = "Multi" + r,
        t = {
            type: "Feature",
            geometry: {
                type: r,
                coordinates: s
            },
            properties: this.properties
        },
        "id"in this && (t.id = this.id),
        t
    }
    ;
    var VectorTileLayer = function(t, e) {
        this.version = 1,
        this.name = null,
        this.extent = 4096,
        this.length = 0,
        this.fA = t,
        this.cA = [],
        this.vA = [],
        this.Cw = [],
        t.nw(readLayer, this, e),
        this.length = this.Cw.length
    };
    function readLayer(t, e, r) {
        15 === t ? e.version = r.ow() : 1 === t ? e.name = r.aw() : 5 === t ? e.extent = r.ow() : 2 === t ? e.Cw.push(r.pos) : 3 === t ? e.cA.push(r.aw()) : 4 === t && e.vA.push(readValueMessage(r))
    }
    function readValueMessage(t) {
        for (var e = null, r = t.ow() + t.pos; t.pos < r; )
            var n = t.ow() >> 3
              , e = 1 == n ? t.aw() : 2 == n ? t.pA() : 3 == n ? t.yA() : 4 == n ? t.mA() : 5 == n ? t.ow() : 6 == n ? t.lA() : 7 == n ? t.vw() : null;
        return e
    }
    VectorTileLayer.prototype.Gw = function(t) {
        if (t < 0 || t >= this.Cw.length)
            throw new Error("feature index out of bounds");
        return this.fA.pos = this.Cw[t],
        t = this.fA.ow() + this.fA.pos,
        new VectorTileFeature(this.fA,t,this.extent,this.cA,this.vA)
    }
    ;
    var VectorTile$1 = function(t, e) {
        this.type = "vector",
        this.layers = t.nw(readTile, {}, e)
    };
    function readTile(t, e, r) {
        3 === t && (t = new VectorTileLayer(r,r.ow() + r.pos)).length && (e[t.name] = t)
    }
    VectorTile$1.Wb = function(t) {
        return t
    }
    ,
    VectorTile$1.Gb = function(t) {
        return t
    }
    ,
    VectorTile$1.prototype.nG = function(t) {
        this.type = t
    }
    ;
    var SHIFT_LEFT_32 = 4294967296
      , SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32
      , Pbf = function() {
        function n(t) {
            this.gA = ArrayBuffer.isView && ArrayBuffer.isView(t) ? t : new Uint8Array(t || 0),
            this.pos = 0,
            this.type = 0,
            this.length = this.gA.length
        }
        return n.prototype.destroy = function() {
            this.gA = new Uint8Array(0)
        }
        ,
        n.prototype.nw = function(t, e, r) {
            for (r = r || this.length; this.pos < r; ) {
                var n = this.ow()
                  , i = n >> 3
                  , a = this.pos;
                this.type = 7 & n,
                t(i, e, this),
                this.pos === a && this.wA(n)
            }
            return e
        }
        ,
        n.prototype.MA = function(t, e) {
            return this.nw(t, e, this.ow() + this.pos)
        }
        ,
        n.prototype.jA = function() {
            var t = readUInt32(this.gA, this.pos);
            return this.pos += 4,
            t
        }
        ,
        n.prototype.AA = function() {
            var t = readInt32(this.gA, this.pos);
            return this.pos += 4,
            t
        }
        ,
        n.prototype.kA = function() {
            var t = readUInt32(this.gA, this.pos) + readUInt32(this.gA, this.pos + 4) * SHIFT_LEFT_32;
            return this.pos += 8,
            t
        }
        ,
        n.prototype.OA = function() {
            var t = readUInt32(this.gA, this.pos) + readInt32(this.gA, this.pos + 4) * SHIFT_LEFT_32;
            return this.pos += 8,
            t
        }
        ,
        n.prototype.pA = function() {
            var t = this.xA(this.gA, this.pos, !0, 23, 4);
            return this.pos += 4,
            t
        }
        ,
        n.prototype.yA = function() {
            var t = this.xA(this.gA, this.pos, !0, 52, 8);
            return this.pos += 8,
            t
        }
        ,
        n.prototype.ow = function(t) {
            var e = this.gA
              , r = e[this.pos++]
              , n = 127 & r;
            return r < 128 || (n |= (127 & (r = e[this.pos++])) << 7,
            r < 128) || (n |= (127 & (r = e[this.pos++])) << 14,
            r < 128) || (n |= (127 & (r = e[this.pos++])) << 21,
            r < 128) ? n : readVarintRemainder(n |= (15 & e[this.pos]) << 28, t, this)
        }
        ,
        n.prototype.mA = function() {
            return this.ow(!0)
        }
        ,
        n.prototype.lA = function() {
            var t = this.ow();
            return t % 2 == 1 ? (t + 1) / -2 : t / 2
        }
        ,
        n.prototype.vw = function() {
            return Boolean(this.ow())
        }
        ,
        n.prototype.aw = function() {
            var t = this.ow() + this.pos
              , e = readUtf8(this.gA, this.pos, t);
            return this.pos = t,
            e
        }
        ,
        n.prototype.mw = function() {
            var t = this.ow() + this.pos
              , e = this.gA.subarray(this.pos, t);
            return this.pos = t,
            e
        }
        ,
        n.prototype.tw = function(t, e) {
            var r = readPackedEnd(this);
            for (t = t || []; this.pos < r; )
                t.push(this.ow(e));
            return t
        }
        ,
        n.prototype.IA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.lA());
            return t
        }
        ,
        n.prototype.TA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.vw());
            return t
        }
        ,
        n.prototype.FA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.pA());
            return t
        }
        ,
        n.prototype._A = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.yA());
            return t
        }
        ,
        n.prototype.SA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.jA());
            return t
        }
        ,
        n.prototype.CA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.AA());
            return t
        }
        ,
        n.prototype.EA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.kA());
            return t
        }
        ,
        n.prototype.NA = function(t) {
            var e = readPackedEnd(this);
            for (t = t || []; this.pos < e; )
                t.push(this.OA());
            return t
        }
        ,
        n.prototype.wA = function(t) {
            (t &= 7) !== n.LA && (t === n.DA ? this.pos = this.ow() + this.pos : t === n.RA ? this.pos += 4 : t === n.PA ? this.pos += 8 : console.log("Unimplemented type: " + t))
        }
        ,
        n.prototype.UA = function(t, e) {
            this.BA(t << 3 | e)
        }
        ,
        n.prototype.zA = function(t) {
            for (var e, r = this.length || 16; r < this.pos + t; )
                r *= 2;
            r !== this.length && ((e = new Uint8Array(r)).set(this.gA),
            this.gA = e,
            this.length = r)
        }
        ,
        n.prototype.finish = function() {
            return this.length = this.pos,
            this.pos = 0,
            this.gA.subarray(0, this.length)
        }
        ,
        n.prototype.qA = function(t) {
            this.zA(4),
            writeInt32(this.gA, t, this.pos),
            this.pos += 4
        }
        ,
        n.prototype.WA = function(t) {
            this.zA(4),
            writeInt32(this.gA, t, this.pos),
            this.pos += 4
        }
        ,
        n.prototype.GA = function(t) {
            this.zA(8),
            writeInt32(this.gA, -1 & t, this.pos),
            writeInt32(this.gA, Math.floor(t * SHIFT_RIGHT_32), this.pos + 4),
            this.pos += 8
        }
        ,
        n.prototype.HA = function(t) {
            this.zA(8),
            writeInt32(this.gA, -1 & t, this.pos),
            writeInt32(this.gA, Math.floor(t * SHIFT_RIGHT_32), this.pos + 4),
            this.pos += 8
        }
        ,
        n.prototype.BA = function(t) {
            268435455 < (t = +t || 0) || t < 0 ? writeBigVarint(t, this) : (this.zA(4),
            this.gA[this.pos++] = 127 & t | (127 < t ? 128 : 0),
            t <= 127 || (this.gA[this.pos++] = 127 & (t >>>= 7) | (127 < t ? 128 : 0),
            t <= 127) || (this.gA[this.pos++] = 127 & (t >>>= 7) | (127 < t ? 128 : 0),
            t <= 127) || (this.gA[this.pos++] = t >>> 7 & 127))
        }
        ,
        n.prototype.VA = function(t) {
            this.BA(t < 0 ? 2 * -t - 1 : 2 * t)
        }
        ,
        n.prototype.$A = function(t) {
            this.BA(Boolean(t))
        }
        ,
        n.prototype.YA = function(t) {
            t = String(t),
            this.zA(4 * t.length),
            this.pos++;
            var e = this.pos;
            this.pos = writeUtf8(this.gA, t, this.pos),
            128 <= (t = this.pos - e) && makeRoomForExtraLength(e, t, this),
            this.pos = e - 1,
            this.BA(t),
            this.pos += t
        }
        ,
        n.prototype.KA = function(t) {
            this.zA(4),
            this.XA(this.gA, t, this.pos, !0, 23, 4),
            this.pos += 4
        }
        ,
        n.prototype.JA = function(t) {
            this.zA(8),
            this.XA(this.gA, t, this.pos, !0, 52, 8),
            this.pos += 8
        }
        ,
        n.prototype.ZA = function(t) {
            var e = t.length;
            this.BA(e),
            this.zA(e);
            for (var r = 0; r < e; r++)
                this.gA[this.pos++] = t[r]
        }
        ,
        n.prototype.QA = function(t, e) {
            this.pos++;
            var r = this.pos;
            t(e, this),
            128 <= (t = this.pos - r) && makeRoomForExtraLength(r, t, this),
            this.pos = r - 1,
            this.BA(t),
            this.pos += t
        }
        ,
        n.prototype.fw = function(t, e, r) {
            this.UA(t, n.DA),
            this.QA(e, r)
        }
        ,
        n.prototype.tk = function(t, e) {
            this.fw(t, writePackedVarint, e)
        }
        ,
        n.prototype.rk = function(t, e) {
            this.fw(t, writePackedSVarint, e)
        }
        ,
        n.prototype.nk = function(t, e) {
            this.fw(t, writePackedBoolean, e)
        }
        ,
        n.prototype.ik = function(t, e) {
            this.fw(t, writePackedFloat, e)
        }
        ,
        n.prototype.ek = function(t, e) {
            this.fw(t, writePackedDouble, e)
        }
        ,
        n.prototype.ak = function(t, e) {
            this.fw(t, writePackedFixed32, e)
        }
        ,
        n.prototype.uk = function(t, e) {
            this.fw(t, writePackedSFixed32, e)
        }
        ,
        n.prototype.sk = function(t, e) {
            this.fw(t, writePackedFixed64, e)
        }
        ,
        n.prototype.fk = function(t, e) {
            this.fw(t, writePackedSFixed64, e)
        }
        ,
        n.prototype.ww = function(t, e) {
            this.UA(t, n.DA),
            this.ZA(e)
        }
        ,
        n.prototype.hk = function(t, e) {
            this.UA(t, n.RA),
            this.qA(e)
        }
        ,
        n.prototype.ck = function(t, e) {
            this.UA(t, n.RA),
            this.WA(e)
        }
        ,
        n.prototype.vk = function(t, e) {
            this.UA(t, n.PA),
            this.GA(e)
        }
        ,
        n.prototype.lk = function(t, e) {
            this.UA(t, n.PA),
            this.HA(e)
        }
        ,
        n.prototype.rw = function(t, e) {
            this.UA(t, n.LA),
            this.BA(e)
        }
        ,
        n.prototype.dk = function(t, e) {
            this.UA(t, n.LA),
            this.VA(e)
        }
        ,
        n.prototype.uw = function(t, e) {
            this.UA(t, n.DA),
            this.YA(e)
        }
        ,
        n.prototype.bk = function(t, e) {
            this.UA(t, n.RA),
            this.KA(e)
        }
        ,
        n.prototype.pk = function(t, e) {
            this.UA(t, n.PA),
            this.JA(e)
        }
        ,
        n.prototype.hw = function(t, e) {
            this.rw(t, Boolean(e))
        }
        ,
        n.prototype.xA = function(t, e, r, n, i) {
            var a, o, s = 8 * i - n - 1, u = (1 << s) - 1, c = u >> 1, f = -7, h = r ? i - 1 : 0, l = r ? -1 : 1, i = t[e + h];
            for (h += l,
            a = i & (1 << -f) - 1,
            i >>= -f,
            f += s; 0 < f; a = 256 * a + t[e + h],
            h += l,
            f -= 8)
                ;
            for (o = a & (1 << -f) - 1,
            a >>= -f,
            f += n; 0 < f; o = 256 * o + t[e + h],
            h += l,
            f -= 8)
                ;
            if (0 === a)
                a = 1 - c;
            else {
                if (a === u)
                    return o ? NaN : 1 / 0 * (i ? -1 : 1);
                o += Math.pow(2, n),
                a -= c
            }
            return (i ? -1 : 1) * o * Math.pow(2, a - n)
        }
        ,
        n.prototype.XA = function(t, e, r, n, i, a) {
            var o, s, u = 8 * a - i - 1, c = (1 << u) - 1, f = c >> 1, h = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, l = n ? 0 : a - 1, d = n ? 1 : -1, a = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
            for (e = Math.abs(e),
            isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0,
            o = c) : (o = Math.floor(Math.log(e) / Math.LN2),
            e * (n = Math.pow(2, -o)) < 1 && (o--,
            n *= 2),
            2 <= (e += 1 <= o + f ? h / n : h * Math.pow(2, 1 - f)) * n && (o++,
            n /= 2),
            c <= o + f ? (s = 0,
            o = c) : 1 <= o + f ? (s = (e * n - 1) * Math.pow(2, i),
            o += f) : (s = e * Math.pow(2, f - 1) * Math.pow(2, i),
            o = 0)); 8 <= i; t[r + l] = 255 & s,
            l += d,
            s /= 256,
            i -= 8)
                ;
            for (o = o << i | s,
            u += i; 0 < u; t[r + l] = 255 & o,
            l += d,
            o /= 256,
            u -= 8)
                ;
            t[r + l - d] |= 128 * a
        }
        ,
        n.LA = 0,
        n.PA = 1,
        n.DA = 2,
        n.RA = 5,
        n
    }();
    function readVarintRemainder(t, e, r) {
        var n = r.gA
          , i = n[r.pos++]
          , a = (112 & i) >> 4;
        if (i < 128)
            return toNum(t, a, e);
        if (a |= (127 & (i = n[r.pos++])) << 3,
        i < 128)
            return toNum(t, a, e);
        if (a |= (127 & (i = n[r.pos++])) << 10,
        i < 128)
            return toNum(t, a, e);
        if (a |= (127 & (i = n[r.pos++])) << 17,
        i < 128)
            return toNum(t, a, e);
        if (a |= (127 & (i = n[r.pos++])) << 24,
        i < 128)
            return toNum(t, a, e);
        if (a |= (1 & (i = n[r.pos++])) << 31,
        i < 128)
            return toNum(t, a, e);
        throw new Error("Expected varint not more than 10 bytes")
    }
    function readPackedEnd(t) {
        return t.type === Pbf.DA ? t.ow() + t.pos : t.pos + 1
    }
    function toNum(t, e, r) {
        return r ? 4294967296 * e + (t >>> 0) : 4294967296 * (e >>> 0) + (t >>> 0)
    }
    function writeBigVarint(t, e) {
        var r, n;
        if (0 <= t ? (r = t % 4294967296 | 0,
        n = t / 4294967296 | 0) : (n = ~(-t / 4294967296),
        4294967295 ^ (r = ~(-t % 4294967296)) ? r = r + 1 | 0 : n = n + 1 | (r = 0)),
        0x10000000000000000 <= t || t < -0x10000000000000000)
            throw new Error("Given varint doesn't fit into 10 bytes");
        e.zA(10),
        writeBigVarintLow(r, n, e),
        writeBigVarintHigh(n, e)
    }
    function writeBigVarintLow(t, e, r) {
        r.gA[r.pos++] = 127 & t | 128,
        t >>>= 7,
        r.gA[r.pos++] = 127 & t | 128,
        t >>>= 7,
        r.gA[r.pos++] = 127 & t | 128,
        t >>>= 7,
        r.gA[r.pos++] = 127 & t | 128,
        r.gA[r.pos] = 127 & (t >>>= 7)
    }
    function writeBigVarintHigh(t, e) {
        var r = (7 & t) << 4;
        e.gA[e.pos++] |= r | ((t >>>= 3) ? 128 : 0),
        t && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
        t) && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
        t) && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
        t) && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
        t) && (e.gA[e.pos++] = 127 & t)
    }
    function makeRoomForExtraLength(t, e, r) {
        var n = e <= 16383 ? 1 : e <= 2097151 ? 2 : e <= 268435455 ? 3 : Math.ceil(Math.log(e) / (7 * Math.LN2));
        r.zA(n);
        for (var i = r.pos - 1; t <= i; i--)
            r.gA[i + n] = r.gA[i]
    }
    function writePackedVarint(t, e) {
        for (var r = 0; r < t.length; r++)
            e.BA(t[r])
    }
    function writePackedSVarint(t, e) {
        for (var r = 0; r < t.length; r++)
            e.VA(t[r])
    }
    function writePackedFloat(t, e) {
        for (var r = 0; r < t.length; r++)
            e.KA(t[r])
    }
    function writePackedDouble(t, e) {
        for (var r = 0; r < t.length; r++)
            e.JA(t[r])
    }
    function writePackedBoolean(t, e) {
        for (var r = 0; r < t.length; r++)
            e.$A(t[r])
    }
    function writePackedFixed32(t, e) {
        for (var r = 0; r < t.length; r++)
            e.qA(t[r])
    }
    function writePackedSFixed32(t, e) {
        for (var r = 0; r < t.length; r++)
            e.WA(t[r])
    }
    function writePackedFixed64(t, e) {
        for (var r = 0; r < t.length; r++)
            e.GA(t[r])
    }
    function writePackedSFixed64(t, e) {
        for (var r = 0; r < t.length; r++)
            e.HA(t[r])
    }
    function readUInt32(t, e) {
        return (t[e] | t[e + 1] << 8 | t[e + 2] << 16) + 16777216 * t[e + 3]
    }
    function writeInt32(t, e, r) {
        t[r] = e,
        t[r + 1] = e >>> 8,
        t[r + 2] = e >>> 16,
        t[r + 3] = e >>> 24
    }
    function readInt32(t, e) {
        return (t[e] | t[e + 1] << 8 | t[e + 2] << 16) + (t[e + 3] << 24)
    }
    function readUtf8(t, e, r) {
        for (var n = "", i = e; i < r; ) {
            var a = t[i]
              , o = null
              , s = 239 < a ? 4 : 223 < a ? 3 : 191 < a ? 2 : 1;
            if (r < i + s)
                break;
            var u, c = void 0, f = void 0;
            1 === s ? a < 128 && (o = a) : 2 === s ? 128 == (192 & (c = t[i + 1])) && (o = (31 & a) << 6 | 63 & c) <= 127 && (o = null) : 3 === s ? (c = t[i + 1],
            f = t[i + 2],
            128 == (192 & c) && 128 == (192 & f) && ((o = (15 & a) << 12 | (63 & c) << 6 | 63 & f) <= 2047 || 55296 <= o && o <= 57343) && (o = null)) : 4 === s && (c = t[i + 1],
            f = t[i + 2],
            u = t[i + 3],
            128 == (192 & c)) && 128 == (192 & f) && 128 == (192 & u) && ((o = (15 & a) << 18 | (63 & c) << 12 | (63 & f) << 6 | 63 & u) <= 65535 || 1114112 <= o) && (o = null),
            null === o ? (o = 65533,
            s = 1) : 65535 < o && (o -= 65536,
            n += String.fromCharCode(o >>> 10 & 1023 | 55296),
            o = 56320 | 1023 & o),
            n += String.fromCharCode(o),
            i += s
        }
        return n
    }
    function writeUtf8(t, e, r) {
        for (var n = 0, i = void 0, a = void 0; n < e.length; n++) {
            if (55295 < (i = e.charCodeAt(n)) && i < 57344) {
                if (!a) {
                    56319 < i || n + 1 === e.length ? (t[r++] = 239,
                    t[r++] = 191,
                    t[r++] = 189) : a = i;
                    continue
                }
                if (i < 56320) {
                    t[r++] = 239,
                    t[r++] = 191,
                    t[r++] = 189,
                    a = i;
                    continue
                }
                i = a - 55296 << 10 | i - 56320 | 65536,
                a = null
            } else
                a && (t[r++] = 239,
                t[r++] = 191,
                t[r++] = 189,
                a = null);
            i < 128 ? t[r++] = i : (i < 2048 ? t[r++] = i >> 6 | 192 : (i < 65536 ? t[r++] = i >> 12 | 224 : (t[r++] = i >> 18 | 240,
            t[r++] = i >> 12 & 63 | 128),
            t[r++] = i >> 6 & 63 | 128),
            t[r++] = 63 & i | 128)
        }
        return r
    }
    var StyleOptionsBuilding = function() {
        this.hideWithoutStyle = !1,
        this.areas = []
    }, VectorTileSegements = function() {
        function t() {
            this.jc = [],
            this.VM = 0
        }
        return t.prototype.add = function(t, e, r, n, i) {
            VTLineSegement.getKey(t, e, i, n) !== (this.WM ? this.WM.getKey() : "-1") && (this.VM += this.WM ? this.WM.length : 0,
            this.WM = new VTLineSegement(t,e,this.VM,n,i),
            this.jc.push(this.WM)),
            this.WM.add(r)
        }
        ,
        t
    }(), VTLineSegement = function() {
        function t(t, e, r, n, i) {
            this.mainkey = t,
            this.subkey = e,
            this.offset = r,
            this.minzoom = n,
            this.maxzoom = i,
            this.length = 0
        }
        return t.getKey = function(t, e, r, n) {
            return t + ":" + e + ":" + r + ":" + n
        }
        ,
        t.prototype.add = function(t) {
            this.length += t
        }
        ,
        t.prototype.getKey = function() {
            return this.mainkey + ":" + this.subkey + ":" + this.maxzoom + ":" + this.minzoom
        }
        ,
        t
    }(), MapboxSegements = function() {
        function t() {
            this.jc = [],
            this.GM = -1,
            this.HM = -1,
            this.VM = 0
        }
        return t.prototype.add = function(t, e) {
            MBLineSegement.getKey(t),
            this.WM && this.WM.getKey(),
            this.GM = t,
            this.VM += this.WM ? this.WM.length : 0,
            this.WM = new MBLineSegement(t,this.VM),
            this.jc.push(this.WM),
            this.WM.add(e)
        }
        ,
        t
    }(), MBLineSegement = function() {
        function t(t, e) {
            this.style = t,
            this.offset = e,
            this.length = 0
        }
        return t.getKey = function(t) {
            return "" + t
        }
        ,
        t.prototype.add = function(t) {
            this.length += t
        }
        ,
        t.prototype.getKey = function() {
            return "" + this.style
        }
        ,
        t
    }(), ImageDataWraperType, ImageDataWraper = (function(t) {
        t.base64 = "base64",
        t.arraybuffer = "arraybuffer",
        t.bitmap = "bitmap",
        t.empty = "empty"
    }(ImageDataWraperType = ImageDataWraperType || {}),
    function() {
        function t(t, e, r) {
            this.hash = t,
            this.IV = !1,
            "string" != typeof e ? r && r.imageBitmap ? (this.type = ImageDataWraperType.bitmap,
            this.status = "success",
            this.data = e) : (t = new Blob([e],{
                type: "image/png"
            }),
            (r = URLObject.createObjectURL(t)) ? (this.data = r,
            this.type = ImageDataWraperType.arraybuffer,
            this.status = "success") : (this.data = "",
            this.type = ImageDataWraperType.arraybuffer,
            this.status = "error")) : (this.data = e,
            this.type = ImageDataWraperType.base64,
            this.status = "success")
        }
        return t.AV = function(t) {
            return createImageBitmap(new Blob([new Uint8Array(t)]))
        }
        ,
        t.Wb = function(t) {
            var e = {
                data: t.data,
                type: t.type,
                status: t.status,
                IV: t.IV,
                hash: t.hash
            };
            return t.transform(),
            e
        }
        ,
        t.prototype.transform = function() {
            this.IV = !0,
            this.type === ImageDataWraperType.bitmap && (this.data = "")
        }
        ,
        t.prototype.destroy = function() {
            "destroyed" !== this.status && (this.type === ImageDataWraperType.arraybuffer && URLObject.revokeObjectURL(this.data),
            this.data = "",
            this.status = "destroyed")
        }
        ,
        t.prototype.IZ = function(t) {
            var e;
            this.type === ImageDataWraperType.bitmap ? t(this.data) : ((e = new Image).crossOrigin = "",
            e.onload = function() {
                t(e)
            }
            ,
            e.src = this.data)
        }
        ,
        t
    }()), EmptyImageDataWraper = new ImageDataWraper("",""), CircleBucket = (EmptyImageDataWraper.type = ImageDataWraperType.empty,
    function() {
        function t() {
            this._b = new SymbolArray,
            this.uploaded = !1
        }
        return t.prototype.wb = function(t, e) {
            var r = this._b.length;
            return this._b.kb(t[0], t[1], e),
            this._b.length - r
        }
        ,
        t.prototype.upload = function(t) {
            this.uploaded || (this.destroy(),
            this.uploaded = !0,
            this.zs = t.fe(this._b.Mb, SymbolArray.Rb))
        }
        ,
        t.prototype.destroy = function() {
            this.uploaded = !1,
            this.zs && this.zs.context && (this.zs.context.deleteBuffer(this.zs),
            delete this.zs)
        }
        ,
        t.prototype.reset = function() {
            this._b = new SymbolArray,
            this.uploaded = !1
        }
        ,
        t
    }()), SimpleCircleBucket = function() {
        function t() {
            this._b = new SimpleSymbolArray,
            this.uploaded = !1
        }
        return t.prototype.wb = function(t) {
            var e = this._b.length;
            return this._b.kb(t[0], t[1]),
            this._b.length - e
        }
        ,
        t.prototype.upload = function(t) {
            this.uploaded || (this.destroy(),
            this.uploaded = !0,
            this.zs = t.fe(this._b.Mb, SimpleSymbolArray.Rb))
        }
        ,
        t.prototype.destroy = function() {
            this.uploaded = !1,
            this.zs && this.zs.context && (this.zs.context.deleteBuffer(this.zs),
            delete this.zs)
        }
        ,
        t.prototype.reset = function() {
            this._b = new SimpleSymbolArray,
            this.uploaded = !1
        }
        ,
        t
    }(), DistrictLayerStyle = function() {
        this["stroke-width"] = "",
        this["coastline-stroke"] = "",
        this["nation-stroke"] = "",
        this["province-stroke"] = "",
        this["city-stroke"] = "",
        this["county-stroke"] = "",
        this.fill = ""
    }, registry = {};
    function register(t, e, r) {
        void 0 === r && (r = {}),
        Object.defineProperty(e, "yk", {
            value: t,
            writable: !1
        }),
        registry[t] = {
            mk: e,
            gk: r.gk || [],
            wk: r.wk || []
        }
    }
    function serialize(t, e) {
        if (null == t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || t instanceof Boolean || t instanceof Number || t instanceof String || t instanceof Date || t instanceof RegExp)
            return t;
        if (t instanceof ArrayBuffer)
            return e && e.push(t),
            t;
        if (Browser.imageBitmap && t instanceof ImageBitmap)
            return e && e.indexOf(t) < 0 && e.push(t),
            t;
        if (ArrayBuffer.isView(t))
            return o = t,
            e && e.push(o.buffer),
            o;
        if (t instanceof ImageData)
            return e && e.push(t.data.buffer),
            t;
        if (Array.isArray(t)) {
            for (var r = [], n = 0, i = t; n < i.length; n++) {
                var a = i[n];
                r.push(serialize(a, e))
            }
            return r
        }
        if ("object" != typeof t)
            throw new Error("can't serialize object of type " + typeof t);
        var o = t.constructor
          , s = o.yk;
        if (!s)
            throw new Error("can't serialize object of unregistered class");
        var u, c = void 0;
        if (o.Wb)
            c = o.Wb(t, e);
        else {
            for (var f in c = {},
            t)
                !t.hasOwnProperty(f) || 0 <= registry[s].gk.indexOf(f) || (u = t[f],
                c[f] = 0 <= registry[s].wk.indexOf(f) ? u : serialize(u, e));
            t instanceof Error && (c.message = t.message)
        }
        if (c.$name)
            throw new Error("$name property is reserved for worker serialization logic.");
        return "Object" !== s && (c.$name = s),
        c
    }
    function deserialize(t) {
        if (null == t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || t instanceof Boolean || t instanceof Number || t instanceof String || t instanceof Date || t instanceof RegExp || t instanceof ArrayBuffer || ArrayBuffer.isView(t) || t instanceof ImageData || Browser.imageBitmap && t instanceof ImageBitmap)
            return t;
        if (Array.isArray(t))
            return map(t, deserialize);
        if ("object" != typeof t)
            throw new Error("can't deserialize object of type " + typeof t);
        var e = t.$name || "Object"
          , r = registry[e].mk;
        if (!r)
            throw new Error("can't deserialize unregistered class " + e);
        if (r.Gb)
            return r.Gb(t);
        for (var n = Object.create(r.prototype), i = 0, a = Object.keys(t); i < a.length; i++) {
            var o, s = a[i];
            "$name" !== s && (o = t[s],
            n[s] = 0 <= registry[e].wk.indexOf(s) ? o : deserialize(o))
        }
        return n
    }
    register("Object", Object),
    register("LineArrayBuffer", LineArrayBuffer),
    register("TriangleIndexArray", TriangleIndexArray),
    register("TriangleIndexArrayUint", TriangleIndexArrayUint),
    register("PolylineBucket", PolylineBucket),
    register("LinesIndexArray", LinesIndexArray),
    register("LinesIndexArrayUint", LinesIndexArrayUint),
    register("FillArray", FillArray),
    register("PolygonBucket", PolygonBucket),
    register("CircleBucket", CircleBucket),
    register("SymbolArray", SymbolArray),
    register("FillExtrusionBucket", FillExtrusionBucket),
    register("FillExtrusionArray", FillExtrusionArray),
    register("SmartArrayBuffer", SmartArrayBuffer),
    register("Color", Color),
    register("Segements", NebulaSegements),
    register("VectorTileSegements", VectorTileSegements),
    register("VTLineSegement", VTLineSegement),
    register("LineSegement", LineSegement),
    register("PolygonSegements", PolygonSegements),
    register("VectorTile", VectorTile$1),
    register("VectorTileLayer", VectorTileLayer),
    register("VectorTileFeature", VectorTileFeature),
    register("Pbf", Pbf),
    register("StyleOptionsBuilding", StyleOptionsBuilding),
    register("DistrictStyleOptions", DistrictLayerStyle),
    register("MapboxSegements", MapboxSegements),
    register("MBLineSegement", MBLineSegement),
    register("ImageDataWraper", ImageDataWraper),
    register("TileCoord", TileCoord),
    register("Tile", Tile),
    register("StyleParser", StyleParser);
    var LabelTextStyle = function() {
        function t(t) {
            this.origin = t
        }
        return t.BV = function(t, e) {
            var r = DangerousFontSize
              , n = void 0 === (n = t.fontSize) ? 12 : n
              , i = t.fillColor
              , a = t.strokeColor
              , o = void 0 === (o = t.strokeWidth) ? 0 : o
              , s = void 0 === (s = t.backgroundColor) ? 0 : s
              , t = t.borderColor
              , i = labelsUtil.Yj(Util.color2RgbaArray(void 0 === i ? [0, 0, 0, 1] : i))
              , s = s ? labelsUtil.Yj(Util.color2RgbaArray(s)) : [0, 0, 0, 0]
              , a = labelsUtil.Yj(Util.color2RgbaArray(a), [.988, .988, .988, 1])
              , t = labelsUtil.Yj(Util.color2RgbaArray(t), [.988, .988, .988, 1])
              , u = (n = n || 12) < 10 ? .78125 : 205 / 256
              , c = 0
              , r = (o && (c = u * (1 - (10 < o * e ? 10 : o) / 10.1)),
            o = 1.4142 * (r < n || 1 < e ? 1.7 : 1.5) / n,
            u + 1.5 / 256 * (e - 1));
            return (n = new Float32Array(28)).set(i, 0),
            n.set(a, 4),
            n[8] = o,
            n[9] = c,
            n[10] = r,
            n.set(s, 11),
            n.set(t, 15),
            n[19] = 1,
            n.set(i, 20),
            n.set(a, 24),
            n
        }
        ,
        t.prototype.GV = function(t) {
            switch (t) {
            case "fillColor":
                return this.origin.slice(0, 4);
            case "strokeColor":
                return this.origin.slice(4, 8);
            case "backgroundColor":
                return this.origin.slice(11, 15);
            case "borderColor":
                return this.origin.slice(15, 19);
            case "u_gamma":
                return this.origin[8];
            case "u_borderBuffer":
                return this.origin[9];
            case "u_buffer":
                return this.origin[10];
            case "u_fontSizeFactor":
                return this.origin[19];
            case "u_highlightFillColor":
                return this.origin.slice(20, 24);
            case "u_highlightStrokeColor":
                return this.origin.slice(24, 28);
            default:
                return
            }
        }
        ,
        t.prototype.VV = function(t, e) {
            switch (t) {
            case "u_fontSizeFactor":
                this.origin[19] = e;
                break;
            case "fillColor":
                this.origin.set(e, 0);
                break;
            case "strokeColor":
                this.origin.set(e, 4);
                break;
            case "backgroundColor":
                this.origin.set(e, 11);
                break;
            case "borderColor":
                this.origin.set(e, 8);
                break;
            case "u_highlightFillColor":
                this.origin.set(e, 20);
                break;
            case "u_highlightStrokeColor":
                this.origin.set(e, 24)
            }
        }
        ,
        t
    }()
      , LabelBucket = (register("LabelTextStyle", LabelTextStyle),
    function() {
        function t(t) {
            this.DO = {
                rp: [],
                pp: [],
                bd: [],
                up: 0
            },
            this.ZO = [],
            this.options = {},
            this.Gj = {},
            this.Hj = {},
            this.Vj = {},
            this.QO = {},
            this.tI = {},
            this.Fs = {},
            this.$j = 0,
            this.qO = {},
            this.$O = 0,
            this.rI = {},
            this.iO = "inner",
            this._id = Util.stamp(this),
            this.Mf = t.R_,
            this.ac = t.z_,
            this.io = t.canvas,
            this.NT = t.Nz
        }
        return t.prototype.rQ = function(t, e) {
            var r = void 0 === (r = e.from) ? "inner" : r
              , n = CONSTS.ud
              , t = (labelsUtil.zj(this, t),
            this.iO = r,
            this.Mf && "SDFManagerBase" !== this.Mf.CLASS_NAME)
              , i = this.DO
              , a = (t && (i.rp = new Float32Array(this.$j * n * 6)),
            this.Gj)
              , o = this.Hj
              , s = this.Vj;
            if (!o || !s)
                return null;
            var r = assign(this.options, e)
              , u = this.RO(a)
              , c = isUndefined(r.opacity) ? 1 : r.opacity;
            if (t) {
                for (var f = 0, h = 0, l = 0, d = u; l < d.length; l++) {
                    for (var v = d[l], g = void 0, p = 0, y = v; p < y.length && !((g = o[y[p]]) && g.text && g.text.style); p++)
                        ;
                    var m, b = {
                        vd: []
                    }, T = this.ym().KO;
                    g && g.text && g.text.style ? (m = g.text.style || {},
                    b.vd = new LabelTextStyle(LabelTextStyle.BV(m, void 0 === T ? 1 : T))) : (b.vd = new LabelTextStyle(new Float32Array(28)),
                    b.vd.VV("u_fontSizeFactor", 1)),
                    m = h,
                    b.start = m;
                    var x = isUndefined(x = (T = a[v[0]].opts || {}).opacity) ? 1 : x
                      , M = T.icon && T.icon[0] && T.icon[0].image;
                    b.opacity = x,
                    b.rotation = T.rotation,
                    b.opacity *= c,
                    i.pp.push(b),
                    b.dp = [];
                    for (var S = 0, A = v; S < A.length; S++) {
                        var w = A[S]
                          , P = a[w].CO || []
                          , I = {
                            height: a[w] && a[w].opts.height || 0,
                            from: e.from,
                            angle: a[w] && a[w].data.rotation || 0
                        }
                          , C = this.PO(w, s[w], o[w], i, I)
                          , $ = this.zV(w, s[w], o[w], a[w], i, I, P)
                          , P = this.BO(w, s[w], o[w], a[w], i, P, I);
                        b.dp.push({
                            id: w,
                            Rd: P,
                            icon: C,
                            bg: $,
                            kd: I = 6 * (P + C + $)
                        }),
                        h += I * n
                    }
                    b.end = h,
                    b.pd = M,
                    f += x = h - m,
                    i.bd.push(x)
                }
                i.up = f
            }
            return i.Fz = u,
            this.DO = i
        }
        ,
        t.prototype.destroy = function() {}
        ,
        t.prototype.ym = function() {
            return this.gs.aO()
        }
        ,
        t.prototype.zO = function(t) {
            var e;
            return t ? this.qO[t] || (e = labelsUtil.Kj(parseInt(t, 10)),
            this.qO[t] = e,
            this.qO[t]) : []
        }
        ,
        t.prototype.RO = function(t) {
            var e, r, n, i, a, o, s, u = {}, c = this.Gj, f = this.iO;
            for (e in t)
                t.hasOwnProperty(e) && (n = (r = c[e]).data || {},
                i = (o = r.opts || {}).zIndex,
                a = o.forceShow,
                v = n.rank,
                v = a ? v - 1e5 : v,
                n = isUndefined(o.opacity) ? 1 : o.opacity,
                o = void 0 === (o = (a = this.Hj[e] || {}).text) ? {} : o,
                a = a.icon,
                u[i = ("labelsLayer" === f ? i || v : i) || 1] = u[i] || {},
                o = o && o.style || "",
                s = void 0,
                "labelsLayer" === f ? (s = o ? labelGroup.nT(o) + n : s,
                s += a && a[0] && a[0].image ? a[0].image : "") : s = r.data.extData.Lp ? (r.data.extData.Lp << 16) + r.data.extData.Ap : o ? labelGroup.nT(o) + n : "-1-" + n,
                u[i][s] || (u[i][s] = []),
                u[i][s].push(e));
            for (var h = [], l = 0, d = labelsUtil.rank(Object.keys(u)); l < d.length; l++)
                for (var v, g = u[v = d[l]], p = 0, y = Object.keys(g).sort(); p < y.length; p++) {
                    var m = y[p];
                    h.push(g[m])
                }
            return h
        }
        ,
        t.prototype.WO = function(t, e) {
            var r = Util.WorldAxesCenter;
            return [t - r.x, e - r.y]
        }
        ,
        t.prototype.GO = function(t) {
            return t
        }
        ,
        t.prototype.HO = function(t, e, r, n, i) {
            var a, o, s = i.VO, u = void 0 === (u = i.type) ? EnumLabelFragType.icon : u, c = i.zooms, f = i.height, e = void 0 === (e = e.icon) ? [] : e, h = CONSTS.ud, l = this.$O, d = 0, v = 0, g = ((g = this.ac.getImage(r.image)) && (d = g.startX || 0,
            v = g.startY || 0),
            s[0]), s = s[1], p = c[0], c = c[1], y = exports.cY.icon, e = e.anchorOffset, m = r.size, b = r.clipSize, T = r.clipOrigin, x = m[0], m = m[1], M = b[0], b = b[1], S = T[0], T = T[1], A = (e = this.GO(e))[0] || 0, e = e[1] || 0, r = ((r = r.offset) && (o = r instanceof Array || void 0 === r.x || void 0 === r.y ? (a = r[0],
            r[1]) : (a = r.x,
            r.y)),
            d + S), d = v + T, S = (void 0 !== a && (A += a),
            void 0 !== o && (e += o),
            -i.angle * Math.PI / 180 || 0);
            n.set([A, e, r, d, g, s, y, u, p, c, f, S, 0, A + x, e, r + M, d, g, s, y, u, p, c, f, S, 0, A, m + e, r, d + b, g, s, y, u, p, c, f, S, 0, A + x, e, r + M, d, g, s, y, u, p, c, f, S, 0, A + x, m + e, r + M, d + b, g, s, y, u, p, c, f, S, 0, A, m + e, r, d + b, g, s, y, u, p, c, f, S, 0], l),
            this.$O += 6 * h
        }
        ,
        t.prototype.PO = function(t, e, r, n, i) {
            if (!e || !r)
                return 0;
            var a = e.icon;
            if (!(r = void 0 === (r = r.icon) ? [] : r).length || !r[0].image)
                return 0;
            for (var o = (a = (void 0 === a ? {} : a).origin)[0], s = a[1], u = (a[2],
            this.WO(o, s)), c = i.height, f = i.angle, h = 0, l = r; h < l.length; h++) {
                var d = l[h];
                this.HO(t, e, d, n.rp, {
                    VO: u,
                    zooms: d.zooms,
                    height: c,
                    angle: f
                }),
                delete d.clipOrigin,
                delete d.clipSize,
                delete d.size,
                delete d.image,
                delete d.type,
                delete d.anchor,
                delete d.retina
            }
            return r.length
        }
        ,
        t.prototype.YO = function(t, e, r, n, i) {
            var a = i.VO
              , o = void 0 === (o = i.type) ? EnumLabelFragType.bg : o
              , s = i.zooms
              , u = i.height
              , c = CONSTS.ud
              , f = CONSTS.Kp
              , h = this.$O
              , e = e.padding
              , l = a[0]
              , a = a[1]
              , d = s[0]
              , s = s[1]
              , v = e.w
              , g = e.h
              , f = e.offsetX - f.buffer
              , e = e.offsetY
              , i = -i.angle * Math.PI / 180 || 0;
            if (n.set([f, e, 0, 0, l, a, 0, o, d, s, u, i, 0, f + v, e, 0, 0, l, a, 0, o, d, s, u, i, 0, f, g + e, 0, 0, l, a, 0, o, d, s, u, i, 0, f + v, e, 0, 0, l, a, 0, o, d, s, u, i, 0, f + v, g + e, 0, 0, l, a, 0, o, d, s, u, i, 0, f, g + e, 0, 0, l, a, 0, o, d, s, u, i, 0], h),
            this.$O += 6 * c,
            h = this.$O,
            o = r.text.style.borderWidth) {
                for (var p = [f, e, v, g, l, a, o, d, s, u, i], y = 0; y < 4; y++)
                    p[11] = y,
                    this.sT(p, n, h),
                    h += 6 * c;
                this.$O = h
            }
        }
        ,
        t.prototype.sT = function(t, e, r) {
            var n = (t = void 0 === t ? {} : t)[0]
              , i = t[1]
              , a = t[2]
              , o = t[3]
              , s = t[4]
              , u = t[5]
              , c = t[6]
              , f = t[7]
              , h = t[8]
              , l = t[9]
              , d = t[10]
              , t = t[11]
              , v = EnumLabelFragType.tq
              , g = 0
              , p = 0
              , y = 0
              , m = 0
              , b = 0
              , T = 0
              , x = 0
              , M = 0;
            switch (t) {
            case 0:
                m = p = i - c,
                b = g = n + 0,
                x = y = n + a,
                M = T = i + 0;
                break;
            case 1:
                y = (g = n + a) + c,
                m = p = i - c,
                x = (b = n + a) + c,
                M = T = i + o + c;
                break;
            case 2:
                b = g = n + 0,
                x = y = n + a,
                M = T = (m = p = i + o) + c;
                break;
            case 3:
                g = n - c,
                m = p = i - c,
                b = (y = n) - c,
                x = n,
                M = T = i + o + c
            }
            e.set([g, p, 0, 0, s, u, 0, v, f, h, l, d, 0, y, m, 0, 0, s, u, 0, v, f, h, l, d, 0, b, T, 0, 0, s, u, 0, v, f, h, l, d, 0, y, m, 0, 0, s, u, 0, v, f, h, l, d, 0, b, T, 0, 0, s, u, 0, v, f, h, l, d, 0, x, M, 0, 0, s, u, 0, v, f, h, l, d, 0], r)
        }
        ,
        t.prototype.UO = function(t, e, r, n, i) {
            var a, o, s, u, c, f;
            return e && r && (a = CONSTS.Mp,
            o = CONSTS.Rp,
            f = e.text,
            s = (r.text || {}).zooms,
            r.text) && f.origin ? (u = (f = f.origin)[0],
            c = f[1],
            f[2],
            f = i.height,
            this.YO(t, e, r, n.rp, {
                VO: [u, c],
                zooms: void 0 === s ? [a, o] : s,
                height: f
            }),
            i = 1,
            r.text.style.borderWidth && (i += 4),
            i) : 0
        }
        ,
        t.prototype.zV = function(t, e, r, n, i, a, o) {
            if (!e || !r)
                return 0;
            var s = CONSTS.Mp
              , u = CONSTS.Rp
              , f = e.text.offset
              , l = (h = (c = r).text || {}).style;
            h.type;
            var d = void 0 === (d = h.direction) ? "left" : d
              , s = void 0 === (h = h.zooms) ? [s, u] : h;
            if (!c.text || !c.text.style)
                return 0;
            if (o.length,
            u = !1 === (l = void 0 === l ? {} : l).fold ? 100 : 6,
            h = this.Mf.lineBreak(c.text.txt, {
                fontSize: l.fontSize,
                CO: n.CO,
                type: n.data && n.data.BG || "ch",
                fj: u,
                from: a.from
            }),
            o = {
                direction: d,
                size: l.fontSize,
                yO: c.icon.length && c.icon[0].image
            },
            c = (u = (n = e.text).origin)[0],
            e = u[1],
            u[2],
            !r.text || !n.origin)
                return 0;
            var u = [c, e]
              , n = a.height
              , c = EnumLabelFragType.bg
              , v = CONSTS.ud
              , g = this.$O
              , e = u[0]
              , u = u[1]
              , p = s[0]
              , s = s[1]
              , y = i.rp
              , i = h.maxWidth + 6
              , l = l.fontSize * h.width.length + 8
              , h = this.XV(i, d, o.yO)
              , d = f[0] + h[0] - 1
              , o = f[1] - 2
              , h = -a.angle * Math.PI / 180 || 0;
            if (y.set([d, o, 0, 0, e, u, 0, c, p, s, n, h, 0, d + i, o, 0, 0, e, u, 0, c, p, s, n, h, 0, d, l + o, 0, 0, e, u, 0, c, p, s, n, h, 0, d + i, o, 0, 0, e, u, 0, c, p, s, n, h, 0, d + i, l + o, 0, 0, e, u, 0, c, p, s, n, h, 0, d, l + o, 0, 0, e, u, 0, c, p, s, n, h, 0], g),
            this.$O += 6 * v,
            g = this.$O,
            f = r.text.style.borderWidth) {
                for (var m = [d, o, i, l, e, u, f, p, s, n, h], b = 0; b < 4; b++)
                    m[11] = b,
                    this.sT(m, y, g),
                    g += 6 * v;
                return this.$O = g,
                5
            }
            return 1
        }
        ,
        t.prototype.CT = function(t, e) {
            return this.Mf ? this.Mf.measureText(t, e) : this.NT ? (this.NT.font = (e || 12) + "px",
            this.NT.measureText(t.join("")).width) : 0
        }
        ,
        t.prototype.XO = function(t, e) {
            var r = CONSTS.JM
              , r = void 0 === (n = (e = void 0 === e ? {} : e).direction) ? r.LEFT : n
              , n = e.size
              , e = void 0 !== (e = e.yO) && e
              , t = this.CT(t = void 0 === t ? [] : t, void 0 === n ? DangerousFontSize : n);
            return this.XV(t, r, e)
        }
        ,
        t.prototype.XV = function(t, e, r) {
            void 0 === r && (r = !1);
            var n = 0
              , i = 0;
            switch (e) {
            case (r = CONSTS.JM).LEFT:
                n = -t,
                i = 0;
                break;
            case r.QM:
                i = n = 0;
                break;
            case r.ZM:
            case r.tj:
                n = -t / 2,
                i = 0;
                break;
            case r.ij:
            case r.nj:
                n = -t / 2,
                i = 0;
                break;
            default:
                i = n = 0
            }
            return [n, i]
        }
        ,
        t.prototype.JO = function(t, e, r, n) {
            var i, a, o, s, u, c, f, h, l, d, v, g, p = CONSTS.ud, y = this.$O, m = n.size, b = n.VO, T = void 0 === (T = n.type) ? EnumLabelFragType.text : T, x = (n.id,
            n.zooms), M = n.height, S = CONSTS.Kp, A = this.Mf.mz(e);
            A && (i = A.index,
            g = A.pos,
            A = A.char,
            a = b[0],
            b = b[1],
            o = x[0],
            x = x[1],
            A || (console.log("!metric", e, String.fromCharCode(e)),
            A = this.Mf.mz(32).char),
            e = m / S.size,
            m = A[0],
            s = A[1],
            A[2],
            A[3],
            A[4],
            v = A[5],
            u = A[6],
            S = S.buffer,
            0 < m && 0 < s && (c = (f = r.x) - S * e,
            f = +(f + ((m += 2 * S) - S) * e),
            h = +((l = r.y) + u * e),
            l = +(l + ((s += 2 * S) + u) * e),
            d = S = 0,
            S = (S += g.startX) + v,
            v = (d += g.startY) + u,
            g = -n.angle * Math.PI / 180 || 0,
            t.set([c, h, S, v, a, b, i, T, o, x, M, g, 0, f, h, S + m, v, a, b, i, T, o, x, M, g, 0, c, l, S, v + s, a, b, i, T, o, x, M, g, 0, c, l, S, v + s, a, b, i, T, o, x, M, g, 0, f, h, S + m, v, a, b, i, T, o, x, M, g, 0, f, l, S + m, v + s, a, b, i, T, o, x, M, g, 0], y),
            this.$O += 6 * p),
            r.x = r.x + (A[0] + CONSTS.ic) * e)
        }
        ,
        t.prototype.BO = function(t, e, r, n, i, a, o) {
            if (!(e && r && r.text && r.text.txt))
                return 0;
            var s = CONSTS.Mp
              , u = CONSTS.Rp
              , c = (e = e.text).origin
              , f = e.offset
              , h = (e = r.text || {}).style;
            e.type;
            var l = void 0 === (l = e.direction) ? "left" : l
              , d = void 0 === (e = e.zooms) ? [s, u] : e
              , v = a
              , s = c[0]
              , u = c[1];
            if (c[2],
            !r.text || !r.text.style)
                return 0;
            for (var g = v.length, p = g, e = !1 === (h = void 0 === h ? {} : h).fold ? 100 : 6, y = ((a = this.Mf.lineBreak(r.text.txt, {
                fontSize: h.fontSize,
                CO: (n = void 0 === n ? {} : n).CO,
                type: n.data && n.data.BG || "ch",
                fj: e,
                from: o.from
            })).lines.length,
            a.oQ), m = h.fontSize, b = {
                direction: l,
                size: m,
                yO: r.icon.length && r.icon[0].image
            }, T = [s, u], x = {
                x: 0,
                y: 0
            }, M = o.height, S = o.angle, A = -1, w = 0, P = 0; P < g; P++) {
                var I = v[P]
                  , C = this.eQ(y, w)
                  , $ = (w += I.split("|").length,
                this.nQ(v, y[C], y[C + 1]))
                  , $ = v.slice.apply(v, $)
                  , $ = this.XO($, b)
                  , $ = vector.add(f, $);
                if (0 === C && 0 === P && (x.x = $[0],
                x.y = $[1]),
                C && (x.y = $[1] + (m + 3) * C,
                A !== C)) {
                    if ("32" === I) {
                        p--;
                        continue
                    }
                    x.x = $[0]
                }
                A = C,
                this.JO(i.rp, I, x, {
                    size: m,
                    VO: T,
                    id: t,
                    zooms: d,
                    height: M,
                    angle: S
                })
            }
            return p
        }
        ,
        t.prototype.nQ = function(t, e, r) {
            for (var n = 0, i = 0, a = 0, o = t.length, s = 0; s < o; s++) {
                for (var u = t[s].split("|").length, c = 0; c < u; c++) {
                    var f = a + c;
                    f === e && (n = s),
                    f === r && (i = s)
                }
                a += u
            }
            return [n, i = a <= r ? o : i]
        }
        ,
        t.prototype.eQ = function(t, e) {
            for (var r = (t = void 0 === t ? [] : t).length, n = 0; n < r - 1; n++)
                if (e >= t[n] && e < t[n + 1])
                    return n;
            return 0
        }
        ,
        t
    }())
      , DefaultLabelsLayerOpts = {
        opacity: 1,
        collision: !0,
        animation: !0
    }
      , Labels = function() {
        function t(t) {
            if (this.CLASS_NAME = "AMap.LabelsLayer",
            this.Gj = {},
            this.Hj = {},
            this.Vj = {},
            this.Fs = {},
            this.Es = {},
            this.Wj = {},
            this.$j = 0,
            this.zp = {},
            this.render = null,
            this.eI = {},
            this.nI = [],
            this.cI = !1,
            this.iI = !1,
            this.iO = "",
            this.cI = !1,
            this._opts = assign({}, DefaultLabelsLayerOpts, {
                opacity: t.opacity
            }),
            this.Mf = t.R_,
            this.ac = t.z_,
            this.PN = t.info || {},
            !this.Mf || "SDFManagerBase" === this.Mf.CLASS_NAME)
                try {
                    var e = this.io = document.createElement("canvas")
                      , r = void 0;
                    e && (r = this.NT = e.getContext("2d")),
                    t.canvas = e,
                    t.Nz = r
                } catch (t) {
                    console.log("canvas 初始化失败")
                }
            this.sI = new LabelPlacement(t),
            this.fI = new LabelBucket(t)
        }
        return t.prototype.Ns = function(t, e) {
            var r = (e = void 0 === e ? {} : e).zoom
              , n = e.center
              , i = e.from;
            return this.nI = t,
            this.iI = !0,
            this.iO = i,
            this.eI.zoom = r || 20,
            this.oI(),
            this.hu = n,
            this.uI(e)
        }
        ,
        t.prototype.aO = function() {
            return this.eI
        }
        ,
        t.prototype.zL = function(t) {
            return this.Wj[t]
        }
        ,
        t.prototype.uI = function(t) {
            var e = this.iO
              , e = {
                center: this.hu,
                from: e
            };
            if (assign(e, t = void 0 === t ? {} : t),
            this.sI.nO(this, e),
            this.$j = this.sI.$j,
            t = this.fI.rQ(this, e)) {
                var r, n, i, a, o, s, u, c = {}, f = {}, e = t.Fz || {}, h = (delete t.Fz,
                this.Gj);
                if ("inner" !== this.iO)
                    return {
                        Nf: h,
                        style: this.Hj,
                        coords: this.Vj,
                        rp: t,
                        zp: this.zp,
                        Fz: e
                    };
                for (r in h)
                    h.hasOwnProperty(r) && (n = h[r],
                    i = this.Vj[r],
                    a = (u = n.data).extData,
                    o = u.position,
                    s = u.name,
                    u = u.rank,
                    c[r] = {
                        data: {
                            position: o,
                            name: s,
                            rank: u,
                            extData: {
                                type: a.type,
                                id: a.id,
                                Lp: a.Lp,
                                Ap: a.Ap,
                                bz: a.bz
                            }
                        }
                    },
                    f[r] = {
                        origin: i.origin,
                        icon: {
                            anchorOffset: i.icon.anchorOffset,
                            size: i.icon.size
                        },
                        padding: i.padding
                    },
                    n.opts) && (c[r].opts = {
                        zooms: n.opts.zooms
                    });
                return {
                    Nf: c,
                    style: this.Hj,
                    coords: f,
                    rp: t,
                    zp: this.zp,
                    Fz: e
                }
            }
        }
        ,
        t.prototype.oI = function() {
            for (var t = this.nI, e = this.Gj || {}, r = this.Wj, n = this.zp, i = CONSTS.Mp, a = CONSTS.Rp, o = CONSTS.Pp, s = CONSTS.jp, u = 0, c = t; u < c.length; u++) {
                for (var f = c[u], h = f.data.id, l = f.opts && f.opts.zooms || [], d = void 0 === (d = l[0]) ? i : d, v = void 0 === (l = l[1]) ? a : l, g = isUndefined(r[h]) ? Util.stamp(this) : r[h], p = (h && (r[h] = g),
                Math.ceil(d - o)); p <= v + s; )
                    n[p] || (n[p] = []),
                    n[p].push(g),
                    p++;
                e[g] = f,
                e[g].CO = this.Ws(f),
                this.hI(f)
            }
            if ("undefined" != typeof Uint32Array)
                for (var y in n)
                    n.hasOwnProperty(y) && (n[y] = new Uint32Array(n[y]));
            this.Gj = e
        }
        ,
        t.prototype.hI = function(t) {
            var e = this.Fs;
            (t = (t = t.opts.icon) && t.image || "") && (e[t] = 1)
        }
        ,
        t.prototype.Ws = function(t) {
            this.Es;
            var e = t.data.txt || ""
              , t = (t.opts && t.opts.text || {}).$G || []
              , e = labelsUtil.EQ(e, t);
            return labelsUtil.aQ(e)
        }
        ,
        t
    }()
      , DynamicVerticeStyle = function() {}
      , DynamicVertice = function() {
        function r(t, e) {
            this.zo = t,
            this.Nf = e.Nf,
            this.style = e.style,
            Object.setPrototypeOf(this.style, new DynamicVerticeStyle),
            this.coords = e.coords,
            this.rp = e.rp,
            this.zp = e.zp
        }
        return r.Wb = function(t, e) {
            var r = {
                zo: t.zo,
                coords: t.coords,
                Nf: t.Nf,
                style: t.style
            };
            return {
                JSON: JSON.stringify(r),
                kV: {
                    rp: serialize(t.rp, e),
                    zp: serialize(t.zp, e)
                }
            }
        }
        ,
        r.Gb = function(t) {
            var e = JSON.parse(t.JSON);
            return t.kV.rp.pp = deserialize(t.kV.rp.pp),
            e.rp = t.kV.rp,
            e.zp = t.kV.zp,
            new r(e.zo,e)
        }
        ,
        r.prototype.upload = function(t) {
            this.buffer || (this.buffer = t.fe(this.rp.rp, CONSTS.sp))
        }
        ,
        r.prototype.destroy = function() {
            this.buffer && (this.buffer.context.deleteBuffer(this.buffer),
            delete this.buffer)
        }
        ,
        r
    }();
    function feature(t, e, r) {
        var n = {
            type: "Feature"
        };
        return 0 !== (r = void 0 === r ? {} : r).id && !r.id || (n.id = r.id),
        r.Ro && (n.Ro = r.Ro),
        n.properties = e || {},
        n.geometry = t,
        n
    }
    function polygon(t, e, r) {
        void 0 === r && (r = {});
        for (var n = 0, i = t; n < i.length; n++) {
            var a = i[n];
            if (a.length < 4)
                throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
            for (var o = 0; o < a[a.length - 1].length; o++)
                if (a[a.length - 1][o] !== a[0][o])
                    throw new Error("First and last Position are not equivalent.")
        }
        return feature({
            type: "Polygon",
            coordinates: t
        }, e, r)
    }
    function lineString(t, e, r) {
        if (void 0 === r && (r = {}),
        t.length < 2)
            throw new Error("coordinates must be an array of two or more positions");
        return feature({
            type: "LineString",
            coordinates: t
        }, e, r)
    }
    function multiLineString(t, e, r) {
        return feature({
            type: "MultiLineString",
            coordinates: t
        }, e, r = void 0 === r ? {} : r)
    }
    function multiPolygon(t, e, r) {
        return feature({
            type: "MultiPolygon",
            coordinates: t
        }, e, r = void 0 === r ? {} : r)
    }
    function getGeom(t) {
        return "Feature" === t.type ? t.geometry : t
    }
    function lineclip(t, e, r) {
        var n, i, a, o, s, u = t.length, c = bitCode(t[0], e), f = [];
        for (r = r || [],
        n = 1; n < u; n++) {
            for (o = t[n - 1],
            i = a = bitCode(s = t[n], e); ; ) {
                if (!(c | i)) {
                    f.push(o),
                    i !== a ? (f.push(s),
                    n < u - 1 && (r.push(f),
                    f = [])) : n === u - 1 && f.push(s);
                    break
                }
                if (c & i)
                    break;
                c ? c = bitCode(o = intersect(o, s, c, e), e) : i = bitCode(s = intersect(o, s, i, e), e)
            }
            c = a
        }
        f.length && r.push(f)
    }
    function polygonclip(t, e) {
        for (var r, n, i, a, o, s, u = 1; u <= 8; u *= 2) {
            for (r = [],
            i = !(bitCode(n = t[t.length - 1], e) & u),
            a = 0; a < t.length; a++)
                (s = !(bitCode(o = t[a], e) & u)) !== i && r.push(intersect(n, o, u, e)),
                s && r.push(o),
                n = o,
                i = s;
            if (!(t = r).length)
                break
        }
        return r
    }
    function intersect(t, e, r, n) {
        return 8 & r ? [t[0] + (e[0] - t[0]) * (n[3] - t[1]) / (e[1] - t[1]), n[3]] : 4 & r ? [t[0] + (e[0] - t[0]) * (n[1] - t[1]) / (e[1] - t[1]), n[1]] : 2 & r ? [n[2], t[1] + (e[1] - t[1]) * (n[2] - t[0]) / (e[0] - t[0])] : 1 & r ? [n[0], t[1] + (e[1] - t[1]) * (n[0] - t[0]) / (e[0] - t[0])] : null
    }
    function bitCode(t, e) {
        var r = 0;
        return t[0] < e[0] ? r |= 1 : t[0] > e[2] && (r |= 2),
        t[1] < e[1] ? r |= 4 : t[1] > e[3] && (r |= 8),
        r
    }
    function bboxClip(t, e) {
        var r = getGeom(t)
          , n = r.type
          , i = "Feature" === t.type ? t.properties : {}
          , a = r.coordinates;
        switch (n) {
        case "LineString":
        case "MultiLineString":
            var o = [];
            return (a = "LineString" === n ? [a] : a).forEach(function(t) {
                lineclip(t, e, o)
            }),
            1 === o.length ? lineString(o[0], i) : multiLineString(o, i);
        case "Polygon":
            return polygon(clipPolygon(a, e), i);
        case "MultiPolygon":
            return multiPolygon(a.map(function(t) {
                return clipPolygon(t, e)
            }), i);
        default:
            throw new Error("geometry " + n + " not supported")
        }
    }
    function clipPolygon(t, e) {
        for (var r = [], n = 0, i = t; n < i.length; n++) {
            var a = polygonclip(i[n], e);
            0 < a.length && (a[0][0] === a[a.length - 1][0] && a[0][1] === a[a.length - 1][1] || a.push(a[0]),
            4 <= a.length) && r.push(a)
        }
        return r
    }
    register("DynamicVertice", DynamicVertice);
    var DEF_NDS_MAX_COORD = 2147483648
      , DEF_DEGREE_MAX_COORD = 180
      , MKT = 20037508.342789244;
    function tileInnerCoord2LngLat(t, e, r, n) {
        var a = r + (i = getTileSWCoord(t, e))[0]
          , i = n + i[1];
        return r = a << (t = getCoordShift(t.z, e)),
        n = i << t,
        [coord2Degree(r = 0 < a && r < 0 ? DEF_NDS_MAX_COORD - 1 : r), coord2Degree(n)]
    }
    function LngLat2TileInnerCoord(t, e, r, n, i) {
        var r = degree2Coord(r)
          , n = degree2Coord(n)
          , a = getCoordShift(i.z, e)
          , n = n >> a;
        return [(r = r >> a) - (a = getTileSWCoord(i, e))[0], n - a[1]]
    }
    var cache = {};
    function lnglat2WGSCoord2(t) {
        var e, r;
        return cache[t] || (r = 33 - t,
        e = degree2Coord(180) / (1 << r),
        r = degree2Coord(90) / (1 << r),
        e = 0 < e ? Math.floor(.5 + e) : Math.floor(e - .5),
        r = 0 < r ? Math.floor(.5 + r) : Math.floor(r - .5),
        cache[t] = [2 * e, 2 * r]),
        cache[t]
    }
    function getWorldSize(t, e) {
        return lnglat2WGSCoord2(t + e)
    }
    function getTileSWCoord(t, e) {
        var r = (e = getWorldSize(t.z, e))[0]
          , e = e[1]
          , n = 1 << t.z;
        return [-r / 2 + t.x * r / n, e / 2 - (t.y + 1) * e / n]
    }
    function degree2Coord(t) {
        return Math.floor(t * DEF_NDS_MAX_COORD / DEF_DEGREE_MAX_COORD + .5)
    }
    function coord2Degree(t) {
        return t * DEF_DEGREE_MAX_COORD / DEF_NDS_MAX_COORD
    }
    function getCoordShift(t, e) {
        return 33 - e - t
    }
    function getMVTTileBbox(t, e, r, n, i) {
        return [t * (i = void 0 === i ? 256 : i) * n - MKT, -((e + 1) * i * n - MKT), (t + 1) * i * n - MKT, -(e * i * n - MKT)]
    }
    var MapboxVTSourceWorker = function() {
        function t() {}
        return t.prototype.bw = function(t, e, r, n, i, a) {
            var o = this
              , s = {
                point: {},
                line: {},
                polygon: {},
                polyhedron: {},
                label: {}
            }
              , u = new XMLHttpRequest;
            return u.onreadystatechange = function() {
                var t;
                4 !== u.readyState || 200 !== u.status && 204 !== u.status || (s.point = o.AX(i.point),
                s.line = o.AX(i.line),
                s.polygon = o.AX(i.polygon),
                s.polyhedron = o.AX(i.polyhedron),
                s.label = o.AX(i.label),
                t = new VectorTile$1(new Pbf(new Uint8Array(u.response))),
                t = o.Ow(t, {
                    x: e.x,
                    y: e.y,
                    z: e.z,
                    projectionId: r,
                    tileSize: n
                }, s),
                a(null, exports.Ln({
                    zo: e
                }, t)))
            }
            ,
            u.responseType = "arraybuffer",
            u.open("GET", t, !0),
            u.send(),
            {
                cancel: function() {
                    u.abort()
                }
            }
        }
        ,
        t.prototype.mX = function(t, e, r) {
            var n = {
                point: {},
                line: {},
                polygon: {},
                polyhedron: {},
                label: {}
            };
            n.point = this.AX(e.point),
            n.line = this.AX(e.line),
            n.polygon = this.AX(e.polygon),
            n.polyhedron = this.AX(e.polyhedron),
            n.label = this.AX(e.label),
            this.xw(t, n, !0),
            this.zw(t, n, !0),
            this.nz(t, n, !0),
            this.SX(t, n, !0),
            this.i1(t, n, !0),
            r && r(null, t)
        }
        ,
        t.prototype.Ow = function(h, t, e) {
            var r = t.x
              , n = t.y
              , i = t.z
              , a = t.tileSize
              , o = t.projectionId
              , l = (h.z = i,
            h.x = r,
            h.y = n,
            ProjectionManager.getProjection(o))
              , t = l.getResolution(i)
              , s = (h.projectionId = o,
            h.Ro = getMVTTileBbox(r, n, i, t, a),
            h.zS = lcs.getLocalByCoord([h.Ro[0], h.Ro[1]]),
            h.visible = {
                point: {},
                line: {},
                polygon: {},
                label: {},
                polyhedron: {}
            },
            ProjectionManager.getProjection(o).getResolution(i));
            return forIn(h.layers, function(f) {
                var t = f.Cw
                  , e = (f.Ah = [],
                f.scale = s * a / f.extent,
                transform[o].Xs(a * r, a * n, i));
                f.ox = e[0],
                f.oy = e[1],
                forEach(t, function(t, e) {
                    if ((t = f.Gw(e)).Dw(),
                    f.Ah.push(t),
                    t.lines && 0 < t.lines.length) {
                        t.Rw = [],
                        t.n1 = [];
                        for (var r = 0, n = t.lines.length; r < n; r++) {
                            for (var i = [], a = [], o = 0, s = t.lines[r].length; o < s; o++) {
                                var u = [f.ox + f.scale * t.lines[r][o][0], f.oy - f.scale * t.lines[r][o][1]]
                                  , c = [u[0] - h.zS.center[0], u[1] - h.zS.center[1]];
                                a.push(l.unproject(u[0], u[1])),
                                i.push(c)
                            }
                            t.Rw.push(i),
                            t.n1.push(a)
                        }
                    }
                })
            }),
            this.uW(h),
            this.xw(h, e),
            this.zw(h, e),
            this.nz(h, e),
            this.SX(h, e),
            this.i1(h, e),
            h
        }
        ,
        t.prototype.uW = function(t) {
            for (var e in t.polygons = {},
            t.polygonOut = {},
            t.polyhedrons = {},
            t.polylines = {},
            t.points = {},
            t.layers)
                if (t.layers.hasOwnProperty(e)) {
                    for (var r = t.layers[e], n = [], i = [], a = [], o = [], s = [], u = 0; u < r.Ah.length; u += 1) {
                        var c = r.Ah[u];
                        if (3 == +c.type && c.Rw) {
                            for (var f = c.Rw, h = c.n1, l = [], d = this.g8t(c), v = d.w8t, g = d.height, p = 0; p < f.length; p++)
                                PlaneGeometryUtilInstance.isClockwise(f[p]) ? l.push([p]) : l.length && l[l.length - 1].push(p);
                            for (var y = 0; y < l.length; y++) {
                                var m = l[y];
                                if (1 < m.length)
                                    if (v) {
                                        for (var b = [], T = [], x = 0; x < m.length; x++) {
                                            var M = h[m[x]];
                                            if (P = this.d8t(t, M)) {
                                                0 < x && b.push(T.length / 2);
                                                for (var S = [], A = 0; A < P.length; A++) {
                                                    var w = P[A];
                                                    S.unshift(w[0], w[1])
                                                }
                                                T.push.apply(T, S)
                                            }
                                        }
                                        a.push({
                                            _id_: Util.getGuid("amap_"),
                                            properties: c.properties,
                                            path: T,
                                            LQ: b,
                                            height: g
                                        })
                                    } else {
                                        for (b = [],
                                        T = [],
                                        x = 0; x < m.length; x++) {
                                            var P = f[m[x]];
                                            for (0 < x && b.push(T.length / 2),
                                            A = 0; A < P.length; A++) {
                                                var I = P[A];
                                                T.push(I[0], I[1])
                                            }
                                            i.push({
                                                properties: c.properties,
                                                path: P,
                                                _id_: Util.getGuid("amap_")
                                            })
                                        }
                                        n.push({
                                            properties: c.properties,
                                            path: T,
                                            LQ: b
                                        })
                                    }
                                else if (v) {
                                    if (T = [],
                                    M = h[m[0]],
                                    P = this.d8t(t, M)) {
                                        for (A = 0; A < P.length; A++) {
                                            var C = P[A];
                                            T.unshift(C[0], C[1])
                                        }
                                        a.push({
                                            _id_: Util.getGuid("amap_"),
                                            properties: c.properties,
                                            path: T,
                                            height: g
                                        })
                                    }
                                } else {
                                    for (T = [],
                                    P = f[m[0]],
                                    A = 0; A < P.length; A++) {
                                        var $ = P[A];
                                        T.push($[0], $[1])
                                    }
                                    n.push({
                                        properties: c.properties,
                                        path: T
                                    }),
                                    i.push({
                                        properties: c.properties,
                                        path: P,
                                        _id_: Util.getGuid("amap_")
                                    })
                                }
                            }
                        } else if (2 == +c.type && c.Rw)
                            for (var N = 0, k = c.Rw.length; N < k; N++)
                                o.push({
                                    properties: c.properties,
                                    path: c.Rw[N],
                                    _id_: Util.getGuid("amap_")
                                });
                        else if (1 == +c.type && c.Rw)
                            for (h = c.n1,
                            y = 0; y < c.Rw.length; y++)
                                s.push({
                                    _id_: Util.getGuid("amap_"),
                                    properties: c.properties,
                                    path: c.Rw[y],
                                    lnglat: __spreadArrays(h[0][0])
                                });
                        delete c.n1
                    }
                    t.polygons[e] = n,
                    t.polygonOut[e] = i,
                    t.polyhedrons[e] = a,
                    t.polylines[e] = o,
                    t.points[e] = s
                }
            delete t.layers
        }
        ,
        t.prototype.xw = function(t, e, r) {
            if (void 0 === r && (r = !1),
            !t || !t.$c || r) {
                var n = new VectorTileSegements
                  , i = (t.Uc = n,
                r || (t.$c = new PolylineBucket),
                e.line.sourceLayer)
                  , a = t.polylines;
                if (a)
                    for (var o in t.visible.line[i] = [],
                    a)
                        if (!i || i === o)
                            for (var u = a[o], c = 0, f = u.length; c < f; c++) {
                                var h, l = u[c], v = (d = this.Mn(e.line, l.properties)).color, g = d.lineWidth, p = d.dash, d = +(d.visible || !d.filter);
                                t.visible.line[i] || (t.visible.line[i] = []),
                                d && t.visible.line[i].push(l._id_),
                                v[3] *= d,
                                r ? n.add(v + ":" + g + ":" + p, 0, l.a1, 0, 22) : (h = (d = t.$c.g0(l.path, {
                                    X_: 0,
                                    lineJoin: "round",
                                    lineCap: "butt"
                                })).Iw,
                                d = d.distance,
                                0 < h && (l.a1 = h,
                                n.add(v + ":" + g + ":" + p, 0, h, 0, 22),
                                l.distance = d))
                            }
            }
        }
        ,
        t.prototype.zw = function(t, e, r) {
            if (void 0 === r && (r = !1),
            !t || !t.Dc || r) {
                var n = new VectorTileSegements
                  , i = (t.Oc = n,
                new VectorTileSegements)
                  , a = (t.Fc = i,
                r || (t.Dc = new PolygonBucket,
                t.pX = new PolylineBucket),
                e.polygon.sourceLayer)
                  , o = t.polygons;
                if (o) {
                    for (var s in o)
                        if (!a || a === s)
                            for (var u = 0, c = (v = o[s]).length; u < c; u++) {
                                var f, h = v[u], l = +((g = this.Mn(e.polygon, h.properties)).visible || !g.filter);
                                g.color[3] *= l,
                                r ? n.add(g.color + "", 0, h.a1, 0, 22) : 0 < (f = t.Dc.Nx(h.path, h.LQ)) && (h.a1 = f,
                                n.add(g.color + "", 0, f, 0, 22))
                            }
                    var d = t.polygonOut;
                    for (s in d)
                        if (!a || a === s)
                            for (var v, u = 0, c = (v = d[s]).length; u < c; u++) {
                                var g, p, y, m = v[u], l = +((g = this.Mn(e.polygon, m.properties)).visible || !g.filter);
                                t.visible.polygon[a] || (t.visible.polygon[a] = []),
                                l && t.visible.polygon[a].push(m._id_),
                                g.borderWidth *= l,
                                r ? i.add(g.borderColor + ":" + g.dash + ":" + g.borderWidth, 0, m.a1, 0, 22) : (p = (y = t.pX.g0(m.path, {
                                    X_: 0,
                                    lineJoin: "round",
                                    lineCap: "butt"
                                })).Iw,
                                y = y.distance,
                                0 < p && (m.a1 = p,
                                i.add(g.borderColor + ":" + g.dash + ":" + g.borderWidth, 0, p, 0, 22),
                                m.distance = y))
                            }
                }
            }
        }
        ,
        t.prototype.nz = function(t, e, r) {
            if (void 0 === r && (r = !1),
            !t || !t.A_ || r) {
                var n = new NebulaSegements
                  , i = (t.w0 = n,
                r || (t.A_ = new FillExtrusionBucket),
                e.polyhedron.sourceLayer)
                  , a = t.polyhedrons;
                if (a)
                    for (var o in t.visible.polyhedron[i] = [],
                    a)
                        if (!i || i === o)
                            for (var u = a[o], c = 0, f = u.length; c < f; c++) {
                                var h = u[c]
                                  , l = h.properties
                                  , d = +((l = this.Mn(e.polyhedron, void 0 === l ? {} : l)).visible || !l.filter);
                                t.visible.polyhedron[i] || (t.visible.polyhedron[i] = []),
                                d ? t.visible.polyhedron[i].push(h._id_) : (l.topColor = void 0,
                                l.sideColor = void 0,
                                l.texture = ""),
                                r ? n.add(h._id_, 1e3, h.a1, 0, 22, l.texture, l.topColor, l.sideColor) : 0 < (d = t.A_.tz(h.path, h.height, h.LQ)) && (h.a1 = d,
                                n.add(h._id_, 1e3, d, 0, 22, l.texture, l.topColor, l.sideColor))
                            }
            }
        }
        ,
        t.prototype.SX = function(t, e, r) {
            if (void 0 === r && (r = !1),
            !t || !t.dX || r) {
                var n = t.IX
                  , n = new VectorTileSegements
                  , i = (t.IX = n,
                t.dX = new CircleBucket,
                e.point.sourceLayer)
                  , a = t.points;
                if (a)
                    for (var o in t.visible.point[i] = [],
                    a)
                        if (!i || i === o)
                            for (var u = a[o], c = 0, f = u.length; c < f; c++) {
                                var h = u[c]
                                  , l = this.Mn(e.point, h.properties);
                                t.visible.point[i] || (t.visible.point[i] = []),
                                t.visible.point[i].push(h._id_),
                                0 < (h = t.dX.wb(h.path[0], l)) && n.add("point", 0, h, 0, 22)
                            }
            }
        }
        ,
        t.prototype.i1 = function(t, e, r) {
            if (void 0 === r && (r = !1),
            !t || !t.labels || r) {
                t.labels = [];
                var n = e.label.sourceLayer
                  , i = (t.visible.label[n] = [],
                t.points[n]);
                if (i)
                    for (var a = 0, o = i.length; a < o; a++) {
                        var s = i[a]
                          , c = (u = this.g8t(s)).height
                          , u = u.w8t
                          , f = this.Mn(e.label, s.properties);
                        t.visible.label[n].push(s._id_),
                        t.labels.push(exports.Ln(exports.Ln({}, f), {
                            position: u ? __spreadArrays(s.lnglat, [c + 1]) : s.lnglat
                        }))
                    }
            }
        }
        ,
        t.prototype.Mn = function(t, e) {
            var r, n = {
                visible: !0,
                filter: !0
            };
            for (r in t) {
                var i = t[r];
                n[r] = "style" === r || "icon" === r || "text" === r ? this.Mn(i, e) : "function" == typeof i ? i()(e, t.injection) : i,
                -1 < r.toLowerCase().indexOf("color") && (n[r] = Util.color2RgbaArray(n[r])),
                "filter" === r && (n.filter = this.$X(e, i))
            }
            return n
        }
        ,
        t.prototype.AX = function(t) {
            var e, r = {};
            for (e in t) {
                var n = t[e];
                n.indexOf && -1 < n.indexOf("function") ? (n = n.replace("function", "return function"),
                r[e] = new Function(n)) : r[e] = "style" === e || "icon" === e || "text" === e ? this.AX(n) : n
            }
            return r
        }
        ,
        t.prototype.$X = function(t, e) {
            if (e) {
                var r = e[0]
                  , n = e[1]
                  , i = e[2]
                  , a = t[r];
                switch (n) {
                case "in":
                    return -1 < i.indexOf(a);
                case "out":
                    return i.indexOf(a) < 0
                }
            }
            return !0
        }
        ,
        t.prototype.d8t = function(t, e) {
            var r = t.projectionId
              , n = t.zS
              , t = t.Ro
              , i = ProjectionManager.getProjection(r)
              , r = t[0]
              , a = t[1]
              , o = t[2]
              , t = t[3]
              , r = __spreadArrays(i.unproject(r, a), i.unproject(o, t))
              , s = null == (a = bboxClip(polygon([e]), r).geometry) ? void 0 : a.coordinates[0];
            if (!s)
                return s;
            for (var u = [], c = 0; c < s.length; c++) {
                var f = s[c]
                  , f = i.project(f[0], f[1]);
                u.push([f[0] - n.center[0], f[1] - n.center[1]])
            }
            return u
        }
        ,
        t.prototype.g8t = function(t) {
            var e = "Y" === (t = t.properties || {})._AS_CUBE && t._HEIGHT_PROP
              , t = e ? +t[t._HEIGHT_PROP] : 0;
            return {
                w8t: e,
                height: t = Number.isNaN(t) || t < 0 ? 0 : t
            }
        }
        ,
        t
    }(), Ring = {
        read: function(t, e) {
            return t.nw(Ring.iw, {
                path: []
            }, e)
        },
        iw: function(t, e, r) {
            0 === t && r.tw(e.path, !0)
        },
        write: function(t, e) {
            if (t.path)
                for (var r = 0; r < t.path.length; r++)
                    e.rw(0, t.path[r])
        }
    }, Building = {
        read: function(t, e) {
            return t.nw(Building.iw, {
                minzoom: 0,
                maxzoom: 0,
                path: [],
                height: 0,
                ew: "",
                altitude: 0
            }, e)
        },
        iw: function(t, e, r) {
            0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? e.path.push(Ring.read(r, r.ow() + r.pos)) : 3 === t ? e.height = r.ow() : 4 === t ? e.ew = r.aw() : 5 === t && (e.altitude = r.ow())
        },
        write: function(t, e) {
            if (t.minzoom && e.rw(0, t.minzoom),
            t.maxzoom && e.rw(1, t.maxzoom),
            t.path)
                for (var r = 0; r < t.path.length; r++)
                    e.fw(2, Ring.write, t.path[r]);
            t.height && e.rw(3, t.height),
            t.ew && e.uw(4, t.ew),
            t.altitude && e.rw(5, t.altitude)
        }
    }, BuildingSameStyle = {
        read: function(t, e) {
            return t.nw(BuildingSameStyle.iw, {
                mainkey: 0,
                subkey: 0,
                items: [],
                resolution: 0
            }, e)
        },
        iw: function(t, e, r) {
            0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Building.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
        },
        write: function(t, e) {
            if (t.mainkey && e.rw(0, t.mainkey),
            t.subkey && e.rw(1, t.subkey),
            t.items)
                for (var r = 0; r < t.items.length; r++)
                    e.fw(2, Building.write, t.items[r]);
            t.resolution && e.rw(3, t.resolution)
        }
    }, buildingLayer = {
        read: function(t, e) {
            return t.nw(buildingLayer.iw, {
                building: []
            }, e)
        },
        iw: function(t, e, r) {
            0 === t && e.building.push(BuildingSameStyle.read(r, r.ow() + r.pos))
        },
        write: function(t, e) {
            if (t.building)
                for (var r = 0; r < t.building.length; r++)
                    e.fw(0, BuildingSameStyle.write, t.building[r])
        }
    }, Poi = {
        read: function(t, e) {
            return t.nw(Poi.IQ, {
                minzoom: 0,
                maxzoom: 0,
                pos: [],
                cw: "",
                ew: "",
                name: "",
                rank: 0,
                BQ: "",
                name_en: "",
                QQ: "",
                CQ: "",
                $G: [],
                iQ: [],
                JQ: []
            }, e)
        },
        IQ: function(t, e, r) {
            0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? r.tw(e.pos, !0) : 3 === t ? e.cw = r.aw() : 4 === t ? e.ew = r.aw() : 5 === t ? e.name = r.aw() : 6 === t ? e.rank = r.ow() : 7 === t ? e.BQ = r.aw() : 8 === t ? e.name_en = r.aw() : 9 === t ? e.QQ = r.aw() : 10 === t ? e.CQ = r.aw() : 11 === t ? r.tw(e.$G) : 12 === t ? r.tw(e.iQ) : 13 === t && r.tw(e.JQ)
        },
        write: function(t, e) {
            if (t.minzoom && e.rw(0, t.minzoom),
            t.maxzoom && e.rw(1, t.maxzoom),
            t.pos)
                for (var r = 0; r < t.pos.length; r++)
                    e.rw(2, t.pos[r]);
            if (t.cw && e.uw(3, t.cw),
            t.ew && e.uw(4, t.ew),
            t.name && e.uw(5, t.name),
            t.rank && e.rw(6, t.rank),
            t.BQ && e.uw(7, t.BQ),
            t.name_en && e.uw(8, t.name_en),
            t.QQ && e.uw(9, t.QQ),
            t.CQ && e.uw(10, t.CQ),
            t.$G)
                for (r = 0; r < t.$G.length; r++)
                    e.rw(11, t.$G[r]);
            if (t.iQ)
                for (r = 0; r < t.iQ.length; r++)
                    e.rw(12, t.iQ[r]);
            if (t.JQ)
                for (r = 0; r < t.JQ.length; r++)
                    e.rw(13, t.JQ[r])
        }
    }, PoiSameStyle = {
        read: function(t, e) {
            return t.nw(PoiSameStyle.IQ, {
                mainkey: 0,
                subkey: 0,
                items: [],
                resolution: 0
            }, e)
        },
        IQ: function(t, e, r) {
            0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Poi.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
        },
        write: function(t, e) {
            if (t.mainkey && e.rw(0, t.mainkey),
            t.subkey && e.rw(1, t.subkey),
            t.items)
                for (var r = 0; r < t.items.length; r++)
                    e.fw(2, Poi.write, t.items[r]);
            t.resolution && e.rw(3, t.resolution)
        }
    }, PoiLayer = {
        read: function(t, e) {
            return t.nw(PoiLayer.IQ, {
                poilabel: []
            }, e)
        },
        IQ: function(t, e, r) {
            0 === t && e.poilabel.push(PoiSameStyle.read(r, r.ow() + r.pos))
        },
        write: function(t, e) {
            if (t.poilabel)
                for (var r = 0; r < t.poilabel.length; r++)
                    e.fw(0, PoiSameStyle.write, t.poilabel[r])
        }
    }, Ring$1 = {
        read: function(t, e) {
            return t.nw(Ring$1.iw, {
                path: []
            }, e)
        },
        iw: function(t, e, r) {
            0 === t && r.tw(e.path, !0)
        },
        write: function(t, e) {
            if (t.path)
                for (var r = 0; r < t.path.length; r++)
                    e.rw(0, t.path[r])
        }
    }, Region = {
        read: function(t, e) {
            return t.nw(Region.iw, {
                minzoom: 0,
                maxzoom: 0,
                path: [],
                sw: ""
            }, e)
        },
        iw: function(t, e, r) {
            0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? e.path.push(Ring$1.read(r, r.ow() + r.pos)) : 3 === t && (e.sw = r.aw())
        },
        write: function(t, e) {
            if (t.minzoom && e.rw(0, t.minzoom),
            t.maxzoom && e.rw(1, t.maxzoom),
            t.path)
                for (var r = 0; r < t.path.length; r++)
                    e.fw(2, Ring$1.write, t.path[r]);
            t.sw && e.uw(3, t.sw)
        }
    }, RegionSameStyle = {
        read: function(t, e) {
            return t.nw(RegionSameStyle.iw, {
                mainkey: 0,
                subkey: 0,
                items: [],
                resolution: 0
            }, e)
        },
        iw: function(t, e, r) {
            0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Region.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
        },
        write: function(t, e) {
            if (t.mainkey && e.rw(0, t.mainkey),
            t.subkey && e.rw(1, t.subkey),
            t.items)
                for (var r = 0; r < t.items.length; r++)
                    e.fw(2, Region.write, t.items[r]);
            t.resolution && e.rw(3, t.resolution)
        }
    }, regionLayer = {
        read: function(t, e) {
            return t.nw(regionLayer.iw, {
                region: []
            }, e)
        },
        iw: function(t, e, r) {
            0 === t && e.region.push(RegionSameStyle.read(r, r.ow() + r.pos))
        },
        write: function(t, e) {
            if (t.region)
                for (var r = 0; r < t.region.length; r++)
                    e.fw(0, RegionSameStyle.write, t.region[r])
        }
    }, Road = {
        read: function(t, e) {
            return t.nw(Road.iw, {
                minzoom: 0,
                maxzoom: 0,
                path: [],
                shield: "",
                shieldType: 0,
                name: "",
                rank: 0,
                name_en: "",
                BQ: "",
                QQ: "",
                CQ: "",
                $G: [],
                iQ: []
            }, e)
        },
        iw: function(t, e, r) {
            0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? r.tw(e.path, !0) : 3 === t ? e.shield = r.aw() : 4 === t ? e.shieldType = r.ow() : 5 === t ? e.name = r.aw() : 6 === t ? e.rank = r.ow() : 7 === t ? e.BQ = r.aw() : 8 === t ? e.name_en = r.aw() : 9 === t ? e.QQ = r.aw() : 10 === t ? e.CQ = r.aw() : 11 === t ? r.tw(e.$G) : 12 === t && (e.id = r.ow())
        },
        write: function(t, e) {
            if (t.minzoom && e.rw(0, t.minzoom),
            t.maxzoom && e.rw(1, t.maxzoom),
            t.path)
                for (var r = 0; r < t.path.length; r++)
                    e.rw(2, t.path[r]);
            if (t.shield && e.uw(3, t.shield),
            t.shieldType && e.rw(4, t.shieldType),
            t.name && e.uw(5, t.name),
            t.rank && e.rw(6, t.rank),
            t.BQ && e.uw(7, t.BQ),
            t.name_en && e.uw(8, t.name_en),
            t.QQ && e.uw(9, t.QQ),
            t.CQ && e.uw(10, t.CQ),
            t.$G)
                for (r = 0; r < t.$G.length; r++)
                    e.rw(11, t.$G[r]);
            t.id && e.rw(12, t.id)
        }
    }, RoadSameStyle = {
        read: function(t, e) {
            return t.nw(RoadSameStyle.iw, {
                mainkey: 0,
                subkey: 0,
                items: [],
                resolution: 0
            }, e)
        },
        iw: function(t, e, r, n) {
            0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Road.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
        },
        write: function(t, e) {
            if (t.mainkey && e.rw(0, t.mainkey),
            t.subkey && e.rw(1, t.subkey),
            t.items)
                for (var r = 0; r < t.items.length; r++)
                    e.fw(2, Road.write, t.items[r]);
            t.resolution && e.rw(3, t.resolution)
        }
    }, roadLayer = {
        read: function(t, e) {
            return t.nw(roadLayer.iw, {
                road: []
            }, e)
        },
        iw: function(t, e, r, n) {
            0 === t && e.road.push(RoadSameStyle.read(r, r.ow() + r.pos))
        },
        write: function(t, e) {
            if (t.road)
                for (var r = 0; r < t.road.length; r++)
                    e.fw(0, RoadSameStyle.write, t.road[r])
        }
    }, roadNameLayer = {
        read: function(t, e) {
            return t.nw(roadNameLayer.iw, {
                roadName: []
            }, e)
        },
        iw: function(t, e, r, n) {
            0 === t && e.roadName.push(RoadSameStyle.read(r, r.ow() + r.pos))
        },
        write: function(t, e) {
            if (t.roadName)
                for (var r = 0; r < t.road.length; r++)
                    e.fw(0, RoadSameStyle.write, t.roadName[r])
        }
    }, Result = {
        read: function(t, e) {
            return t.nw(Result.IQ, {
                tiles: [],
                version: "",
                status: !1,
                db: ""
            }, e)
        },
        IQ: function(t, e, r) {
            0 === t ? e.tiles.push(Result.Gh.read(r, r.ow() + r.pos)) : 1 === t ? e.version = r.aw() : 2 === t ? e.status = r.vw() : 3 === t && (e.db = r.aw())
        },
        write: function(t, e) {
            if (t.tiles)
                for (var r = 0; r < t.tiles.length; r++)
                    e.fw(0, Result.Gh.write, t.tiles[r]);
            t.version && e.uw(1, t.version),
            t.status && e.hw(2, t.status),
            t.db && e.uw(3, t.db)
        },
        Gh: {}
    }, Style = (Result.Gh.read = function(t, e) {
        return t.nw(Result.Gh.IQ, {
            z: 0,
            x: 0,
            y: 0,
            layers: [],
            t: 0
        }, e)
    }
    ,
    Result.Gh.IQ = function(t, e, r) {
        0 === t ? e.z = r.ow() : 1 === t ? e.x = r.ow() : 2 === t ? e.y = r.ow() : 3 === t ? e.layers.push(Result.Gh.lw.read(r, r.ow() + r.pos)) : 4 === t && (e.t = r.ow())
    }
    ,
    Result.Gh.write = function(t, e) {
        if (t.z && e.rw(0, t.z),
        t.x && e.rw(1, t.x),
        t.y && e.rw(2, t.y),
        t.layers)
            for (var r = 0; r < t.layers.length; r++)
                e.fw(3, Result.Gh.lw.write, t.layers[r]);
        t.t && e.rw(4, t.t)
    }
    ,
    Result.Gh.lw = {},
    Result.Gh.lw.read = function(t, e) {
        return t.nw(Result.Gh.lw.IQ, {
            z: 0,
            x: 0,
            y: 0,
            type: 0,
            d: null,
            t: 0
        }, e)
    }
    ,
    Result.Gh.lw.IQ = function(t, e, r) {
        0 === t ? e.z = r.ow() : 1 === t ? e.x = r.ow() : 2 === t ? e.y = r.ow() : 3 === t ? e.type = r.ow() : 4 === t ? e.d = r.mw() : 5 === t && (e.t = r.ow())
    }
    ,
    Result.Gh.lw.write = function(t, e) {
        t.z && e.rw(0, t.z),
        t.x && e.rw(1, t.x),
        t.y && e.rw(2, t.y),
        t.type && e.rw(3, t.type),
        t.d && e.ww(4, t.d),
        t.t && e.rw(5, t.t)
    }
    ,
    {
        read: function(t, e) {
            return t.nw(Style.IQ, {
                bgColor: "",
                zn: 0,
                xV: "",
                stylemaps: [],
                test: 0
            }, e)
        },
        IQ: function(t, e, r) {
            1 === t ? e.bgColor = r.aw() : 2 === t ? e.zn = r.ow(!0) : 3 === t ? e.xV = r.aw() : 4 === t ? e.stylemaps.push(Style.SV.read(r, r.ow() + r.pos)) : 5 === t && (e.test = r.ow(!0))
        },
        write: function(t, e) {
            if (t.bgColor && e.uw(1, t.bgColor),
            t.zn && e.rw(2, t.zn),
            t.xV && e.uw(3, t.xV),
            t.stylemaps)
                for (var r = 0; r < t.stylemaps.length; r++)
                    e.fw(4, Style.SV.write, t.stylemaps[r]);
            t.test && e.rw(5, t.test)
        },
        SV: {}
    }), decodeStyle = (Style.SV.read = function(t, e) {
        return t.nw(Style.SV.IQ, {
            key: [],
            browserStyle: [],
            levelStyleMapping: []
        }, e)
    }
    ,
    Style.SV.IQ = function(t, e, r) {
        1 === t ? e.key.push(r.aw()) : 2 === t ? e.browserStyle.push(r.aw()) : 3 === t && r.tw(e.levelStyleMapping, !0)
    }
    ,
    Style.SV.write = function(t, e) {
        if (t.key)
            for (var r = 0; r < t.key.length; r++)
                e.uw(1, t.key[r]);
        if (t.browserStyle)
            for (r = 0; r < t.browserStyle.length; r++)
                e.uw(2, t.browserStyle[r]);
        if (t.levelStyleMapping)
            for (r = 0; r < t.levelStyleMapping.length; r++)
                e.rw(3, t.levelStyleMapping[r])
    }
    ,
    function(t) {
        return t = new Pbf(t),
        Style.read(t)
    }
    ), decodePois = function(t) {
        return t = new Pbf(t),
        PoiLayer.read(t)
    }, decodeRoads = function(t) {
        return t = new Pbf(t),
        roadLayer.read(t)
    }, decodeRoadNames = function(t) {
        return t = new Pbf(t),
        roadNameLayer.read(t)
    }, decodeRegions = function(t) {
        return t = new Pbf(t),
        regionLayer.read(t)
    }, decodeBuildings = function(t) {
        return t = new Pbf(t),
        buildingLayer.read(t)
    }, decodeTiles = function(t) {
        for (var t = new Pbf(t), e = (t = Result.read(t)).tiles, r = 0, n = e.length; r < n; r += 1)
            for (var i = e[r].layers, a = 0, o = i.length; a < o; a += 1)
                switch (i[a].type) {
                case 0:
                    i[a].d = decodePois(i[a].d);
                    break;
                case 1:
                    i[a].d = decodeRoads(i[a].d);
                    break;
                case 2:
                    i[a].d = decodeRegions(i[a].d);
                    break;
                case 3:
                    i[a].d = decodeBuildings(i[a].d);
                    break;
                case 4:
                    i[a].d = decodeRoadNames(i[a].d)
                }
        return t
    }, CONSTS$2 = {
        _U: ["th", "my"]
    }, SDFManagerBase = function(e) {
        function t() {
            var t = e.call(this) || this;
            return t.CLASS_NAME = "SDFManagerBase",
            t
        }
        return __extends(t, e),
        t.jU = function(t) {
            return t = LangManager.gG(t + ""),
            -1 !== CONSTS$2._U.indexOf(t)
        }
        ,
        t.prototype.FU = function(t) {
            for (var e = [], r = 0, n = t; r < n.length; r++) {
                var i = n[r];
                LangManager.gG(i + ""),
                e.push(i)
            }
            return {
                UU: e,
                DU: []
            }
        }
        ,
        t.prototype.measureText = function(t, e, r) {
            if (r) {
                r.font = (e || 12) + "px";
                for (var n = "", i = 0, a = t; i < a.length; i++) {
                    var o = a[i];
                    n += String.fromCharCode(o)
                }
                return r.measureText(n).width
            }
            return 0
        }
        ,
        t.prototype.lineBreak = function(t, e) {
            var n = void 0 === (r = (e = void 0 === e ? {} : e).fontSize) ? 12 : r
              , r = e.maxWidth
              , i = e.CO
              , a = void 0 === (a = e.fj) ? 6 : a
              , s = void 0 === (o = e.type) ? "en" : o
              , u = e.YQ
              , c = (t = void 0 === t ? "" : t).split(" ")
              , f = []
              , o = r || 90
              , h = 0
              , l = []
              , d = []
              , v = [0];
            if ("labelsLayer" === e.from) {
                for (var g = t.length, p = Math.ceil(g / a), y = Math.ceil(g / p), m = void 0, b = 0, T = 0; T < p; T++) {
                    l[T] || (l[T] = [b]),
                    0 === T ? m = i.slice(0, b = g % y || y) : (m = i.slice(b, b + y),
                    b += y);
                    var x = this.measureText(m, n, u);
                    d.push(x),
                    l[T].push(b)
                }
                for (T = 0; T < l.length; T++) {
                    var M = l[T];
                    v.push(M[M.length - 1])
                }
            } else if ("ch" === s)
                for (T = b = 0; T < c.length; T++) {
                    for (var M = c[T], m = [], S = 0; S < M.length; S++)
                        m.push(M.charCodeAt(S));
                    x = this.measureText(m, n, u),
                    d.push(x),
                    l.push([b, b + M.length + 1]),
                    b += M.length + 1,
                    v.push(b)
                }
            else {
                for (T = 0; T < c.length; T++) {
                    var A = c[T]
                      , m = [];
                    if ("en" === s)
                        for (var w = 0; w < A.length; w++)
                            m.push(A.charCodeAt(w));
                    else {
                        var P = -1 === (P = i.indexOf("32", h)) ? i.length : P;
                        m = i.slice(h, P),
                        h = P + 1
                    }
                    x = this.measureText(m, n, u),
                    f.push(x)
                }
                for (r = Math.max.apply(Math, f),
                l = (e = this.GU(f, o < r ? r : o)).lines,
                d = e.BU,
                T = 0; T < l.length; T++) {
                    var M = l[T]
                      , I = c.slice(M[0], M[M.length - 1] + 1).join(" ")
                      , C = t.indexOf(I)
                      , I = I.length - 1;
                    v.push(C + I + 1)
                }
            }
            return {
                lines: l,
                oQ: v,
                width: d,
                maxWidth: Math.max.apply(Math, d)
            }
        }
        ,
        t.prototype.GU = function(t, e) {
            for (var r = [], n = 0, i = 0, a = [], o = 0, s = t.length, u = 0; u < s; u++) {
                var c = t[u];
                i += c,
                r[n] || (r[n] = []),
                e < i && (r[++n] = [],
                a.push(o),
                o = i = 0),
                r[n].push(u),
                o += c,
                u === s - 1 && a.push(o)
            }
            return {
                lines: r,
                BU: a
            }
        }
        ,
        t.prototype.destroy = function() {}
        ,
        t
    }(Event), LoadFlag, SDFManagerWorker = (function(t) {
        t.TEXTUREFINISH = "TEXTUREFINISH",
        t.UNLOAD = "unload",
        t.LOADING = "loading",
        t.LOADED = "loaded",
        t.FAIL = "fail"
    }(LoadFlag = LoadFlag || {}),
    function(t) {
        t.AllLoaded = "AllLoaded",
        t.AllUnLoaded = "AllUnLoaded",
        t.SomeLoading = "SomeLoading",
        t.AllLoading = "AllLoading"
    }(exports.qu || (exports.qu = {})),
    function(r) {
        function t(t) {
            var e = r.call(this) || this;
            return e.CLASS_NAME = "SDFManagerWorker",
            e.protocol = "https",
            e.range = [],
            e.info = {},
            e.dc = 0,
            e._c = {},
            e._size = 24,
            e.nc = new AdaptorMap,
            e.xc = [],
            e.bc = {},
            e.Xu = {},
            e.yc = 1,
            e.fN = {},
            e.ac = t.z_,
            e._parent = t.parent,
            e
        }
        return __extends(t, r),
        t.prototype.vW = function(t, e) {
            var n = void 0 === (r = e.tiles) ? [] : r
              , i = e.cb
              , a = e.optimalZoom
              , r = void 0 === (r = e.tags) ? [] : r
              , o = e.stamp;
            this.cN = a,
            this.fN[o] || (this.fN[o] = r);
            for (var s = 0; s < n.length; s++) {
                var u = n[s]
                  , c = this.Zu(t);
                e.result = c,
                this.loadData(t, {
                    tile: u,
                    result: c,
                    cb: i,
                    optimalZoom: a,
                    stamp: o,
                    i: s
                })
            }
        }
        ,
        t.prototype.loadData = function(t, e) {
            var r = this
              , n = e.cb
              , i = e.tile
              , a = e.result
              , o = (e.optimalZoom,
            e.stamp)
              , s = e.i
              , u = a || this.Zu(t);
            switch (u.status) {
            case exports.qu.AllLoaded:
                n([]);
                break;
            case exports.qu.AllUnLoaded:
                var c = this.Yu(n, {
                    tile: i,
                    stamp: o,
                    index: s
                });
                this.MI(u.Vu, function(t) {
                    r.Xu[c] = t = void 0 === t ? {} : t,
                    r.Hu()
                });
                break;
            case exports.qu.SomeLoading:
                var f = this.Yu(n, {
                    tile: i,
                    stamp: o,
                    index: s
                });
                this.MI(u.Vu, function(t) {
                    r.Xu[f] = t = void 0 === t ? {} : t,
                    r.Hu()
                });
                break;
            case exports.qu.AllLoading:
                var h = this.Yu(n, {
                    tile: i,
                    stamp: o,
                    index: s
                });
                this.Xu[h] = [],
                this.Hu()
            }
        }
        ,
        t.prototype.mz = function(t) {
            var e = this.info || {};
            return e[t] && (e = e[t]).pos && e.info[t] ? {
                key: t,
                index: exports.cY.dynamic,
                char: e.info[t],
                pos: e.pos
            } : null
        }
        ,
        t.prototype.measureText = function(t, e) {
            for (var r = CONSTS.ic, n = 0, i = this.info, a = e / this._size, o = this.nc, s = 0, u = t; s < u.length; s++) {
                var c = u[s]
                  , f = void 0
                  , h = c;
                (f = o.get(h)) || i.hasOwnProperty(h) && (h = i[h].info[h]) && this.nc.set(c, f = h[4]),
                n += (f + r) * a
            }
            return n
        }
        ,
        t.prototype.Ju = function(t) {
            for (var e = {}, r = 0, n = t; r < n.length; r++) {
                var a = (i = n[r]).range
                  , o = i.info
                  , i = i.pos
                  , s = this.info;
                s[a],
                s[a] = {
                    info: ((s = {})[a] = o,
                    s),
                    pos: i
                },
                this.range.push(a),
                e[a] = 1
            }
            return e
        }
        ,
        t.prototype.AI = function(t, e) {
            this.info[t] && (this.info[t].pos = e)
        }
        ,
        t.prototype.MI = function(e, r) {
            for (var n = this, t = (void 0 === e && (e = []),
            CONSTS.Mj), i = 0, a = e; i < a.length; i++) {
                var o = a[i];
                this._c[o] = !0
            }
            for (var s = [], u = 0, c = this.FU(e), f = c.UU, h = c.DU, l = h.length, d = Math.ceil(l / CONSTS.Mj); u < d; ) {
                var v = h.slice(v = t * u, l < v + t ? l : v + t)
                  , v = this.xI(v);
                s.push(v),
                u++
            }
            s.push(this.pG(f)),
            Promise.all(s).then(function(t) {
                n.II(e),
                t = n.zU(t),
                n.Ju(t),
                r(t)
            })
        }
        ,
        t.prototype.pG = function(t) {
            var r = this;
            return new Promise(function(e) {
                r._parent.loadWordsByFront({
                    Es: t,
                    cb: function(t) {
                        e(t)
                    }
                })
            }
            )
        }
        ,
        t.prototype.xI = function(t) {
            var a = this
              , e = this.fc() + ("/getsdfdata?chars=" + t.join(",").split(",").join("|"));
            return new Promise(function(n, i) {
                XHR.send(e, {
                    Me: "json",
                    method: "get",
                    qw: function(t) {
                        var e, r;
                        t && t.info ? (e = a.vc(t.info),
                        r = new ImageDataWraper(e,t.url),
                        t.url = r,
                        n({
                            range: e,
                            info: t
                        })) : i(null)
                    },
                    error: function() {
                        i(null)
                    }
                })
            }
            )
        }
        ,
        t.prototype.fc = function() {
            var t = CONSTS.pc
              , e = this.protocol + t[this.dc];
            return this.dc = (this.dc + 1) % t.length,
            e
        }
        ,
        t.prototype.vc = function(t) {
            void 0 === t && (t = {});
            (t = map(Object.keys(t), function(t) {
                return parseInt(t, 10)
            })).sort(function(t, e) {
                return t - e
            });
            var e = t.length;
            return 2 <= e ? t[0] + "-" + t[e - 1] : 1 === e ? "" + t[0] : ""
        }
        ,
        t.prototype.gc = function(t) {
            var e = this.range || []
              , r = this.info || {};
            if (-1 !== e.indexOf(t))
                return !0;
            for (var n = parseInt(t, 10), i = 0, a = e; i < a.length; i++) {
                var o = a[i];
                if (o.indexOf("-") < 0) {
                    if (n === +o && (r[o] && r[o].info || {})[t])
                        return !0
                } else {
                    var s = o.split("-")
                      , u = parseInt(s[0] || "", 10)
                      , s = parseInt(s[1] || "", 10);
                    if (u <= n && n <= s && (r[o] && r[o].info || {})[t])
                        return !0
                }
            }
            return !1
        }
        ,
        t.prototype.wc = function(t) {
            return this._c[t]
        }
        ,
        t.prototype.Zu = function(t) {
            for (var e = [], r = 0, n = 0, i = 0, a = t; i < a.length; i++) {
                var o = a[i];
                this.gc(o) || (this.wc(o) ? n += 1 : (r += 1,
                e.push(o)))
            }
            return 0 === n && 0 === r ? {
                status: exports.qu.AllLoaded,
                Vu: e
            } : 0 < r && 0 === n ? {
                status: exports.qu.AllUnLoaded,
                Vu: e
            } : 0 === r && 0 < n ? {
                status: exports.qu.AllLoading,
                Vu: e
            } : {
                status: exports.qu.SomeLoading,
                Vu: e
            }
        }
        ,
        t.prototype.Yu = function(t, e) {
            void 0 === e && (e = {});
            var r = this.yc += 1;
            return this.xc.push(r),
            this.bc[r] = t,
            this.bc[r] = {
                cb: t,
                params: e
            },
            r
        }
        ,
        t.prototype.Hu = function() {
            var t, e, r = this.xc[0];
            r && (t = this.Xu[r]) && (this.xc.shift(),
            (e = this.bc[r]) ? e.cb(t) : console.error("sdf task error"),
            delete this.Xu[r],
            delete this.bc[r],
            this.Hu())
        }
        ,
        t.prototype.II = function(t) {
            for (var e = 0, r = t; e < r.length; e++) {
                var n = r[e];
                delete this._c[n]
            }
        }
        ,
        t.prototype.zU = function(t) {
            for (var e = [], r = 0, n = t = void 0 === t ? [] : t; r < n.length; r++) {
                var i = n[r];
                if (Array.isArray(i))
                    for (var a = 0, o = i; a < o.length; a++) {
                        var s = o[a];
                        e.push(s)
                    }
                else
                    e.push(i)
            }
            return e
        }
        ,
        t
    }(SDFManagerBase)), TaskManager = (function(t) {
        t[t.stop = 0] = "stop",
        t[t.finish = 1] = "finish",
        t[t.pause = 2] = "pause"
    }(exports.vY || (exports.vY = {})),
    function(e) {
        function t() {
            var t = null !== e && e.apply(this, arguments) || this;
            return t.id = 0,
            t.LV = [],
            t._V = {},
            t.CV = {},
            t
        }
        return __extends(t, e),
        t.prototype.register = function(t, e, r) {
            if (this.CV[t])
                throw Error("TaskManager: Exist Task Creator");
            this.CV[t] = {
                PV: e,
                OV: r
            }
        }
        ,
        t.prototype.add = function(t, e) {
            var r;
            if (this.CV[t])
                return t = this.CV[t],
                r = this.id++,
                e = t.PV(e),
                this.LV.push({
                    UQ: e,
                    OV: {
                        id: r,
                        kY: t.OV.kY
                    }
                }),
                r;
            throw Error("TaskManager: Not Exist Task Type")
        }
        ,
        t.prototype.XQ = function(t, e, r) {
            void 0 === e && (e = {
                kY: 1 / 0
            }),
            void 0 === r && (r = !1);
            var n = this.id++;
            return r ? this.LV.unshift({
                UQ: t,
                OV: {
                    id: this.id++,
                    kY: e.kY
                }
            }) : this.LV.push({
                UQ: t,
                OV: {
                    id: this.id++,
                    kY: e.kY
                }
            }),
            n
        }
        ,
        t.prototype.exec = function(t) {
            this.jV();
            for (var e = t, r = Date.now(); 0 < e; ) {
                var n = this.LV.shift();
                if (!n)
                    break;
                var i = n.UQ.play(e);
                n.UQ.status === exports.vY.finish ? this.emit("task:" + n.OV.id, {
                    data: i
                }) : this.LV.unshift(n),
                e = t - (Date.now() - r),
                0 === this.LV.length && this.emit("taskclear", !0)
            }
        }
        ,
        t.prototype.xY = function() {
            return 0 < this.LV.length
        }
        ,
        t.prototype.destroy = function() {
            this.LV = []
        }
        ,
        t.prototype.clear = function(e) {
            this.LV = e ? this.LV.filter(function(t) {
                return t.UQ.type === e
            }) : []
        }
        ,
        t.prototype.jV = function() {
            this.LV.sort(function(t, e) {
                return t.OV.kY - e.OV.kY
            })
        }
        ,
        t
    }(Event)), Actor = function() {
        function t(t, e, r) {
            this.UD = !1,
            this.gI = this.gI.bind(this),
            this.target = t,
            this.parent = e,
            this.dI = r,
            this.pI = {},
            this.bI = Browser.DW ? 1 : 0,
            this.target.addEventListener("message", this.gI, !1)
        }
        return t.prototype.send = function(t, e, r, n) {
            var i = this
              , a = r ? this.dI + ":" + this.bI : null
              , o = (this.bI += 2,
            r && a && (this.pI[a] = r),
            [])
              , s = serialize(e, o);
            if (this.target.postMessage({
                yI: n,
                mI: this.dI,
                type: t,
                id: String(a),
                data: s
            }, o),
            r)
                return {
                    cancel: function() {
                        i.target.postMessage({
                            yI: n,
                            mI: i.dI,
                            type: "<cancel>",
                            id: String(a),
                            key: e.ya
                        }),
                        a && delete i.pI[a]
                    }
                }
        }
        ,
        t.prototype.gI = function(t) {
            var n, e, i = this;
            Browser.DW && "destroy" === t.data.type && self.close();
            var a = (t = t.data).id;
            t.yI && this.dI !== t.yI || ("<cancel>" === t.type ? (e = this.pI[t.id],
            delete this.pI[t.id],
            e && e("<cancel>")) : "<response>" === t.type ? (e = this.pI[t.id],
            delete this.pI[t.id],
            e && t.error ? e(deserialize(t.error)) : e && e(null, deserialize(t.data))) : void 0 !== t.id && this.parent[t.type] && (n = function(t, e) {
                delete i.pI[a];
                var r = []
                  , e = serialize(e, r);
                i.target.postMessage({
                    mI: i.dI,
                    type: "<response>",
                    id: String(a),
                    error: t ? serialize(t) : null,
                    data: e
                }, r),
                n = void 0
            }
            ,
            this.pI[t.id] = null,
            e = this.parent[t.type](t.mI, deserialize(t.data), n)) && null === this.pI[t.id] && (this.pI[t.id] = e.cancel))
        }
        ,
        t.prototype.remove = function() {
            this.target.removeEventListener("message", this.gI, !1)
        }
        ,
        t
    }(), TaskPool = function() {
        function t() {
            this.listener = {},
            this.SN = {}
        }
        return t.prototype.nS = function(r, t) {
            var n = this;
            return this.SN[r] = !0,
            this.listener[r] || (this.listener[r] = []),
            t(function(t, e) {
                n.$N(r, t, e)
            })
        }
        ,
        t.prototype.cancel = function(t) {
            delete this.SN[t]
        }
        ,
        t.prototype.has = function(t) {
            return Boolean(this.SN[t])
        }
        ,
        t.prototype.GN = function(t) {
            return this.listener[t] && 0 < this.listener[t].length
        }
        ,
        t.prototype.SH = function(t, e) {
            this.listener[t] || (this.listener[t] = []),
            this.listener[t].push(e)
        }
        ,
        t.prototype.kN = function(t, e) {
            this.listener[t] && -1 < (e = this.listener[t].indexOf(e)) && this.listener[t].splice(e, 1)
        }
        ,
        t.prototype.$N = function(t, e, r) {
            delete this.SN[t];
            var n = this.listener[t];
            if (delete this.listener[t],
            n)
                for (var i = 0, a = n; i < a.length; i++)
                    (0,
                    a[i])(e, r)
        }
        ,
        t
    }(), StaticSDFManagerWorker = function() {
        function t(t, e) {
            this.parent = t,
            this.CN = e,
            this.jN = [],
            this.EN = 0,
            this._N = {},
            this.NN = {},
            this.LN = new TaskPool,
            this.zW(this.parent.GW.db),
            this.parent.Uh.send("updateDataVersion", this.parent.GW.nebulaVersion)
        }
        return t.prototype.loadData = function(t, o, r) {
            var s, u, c, n, e, f, h = this, l = staticSDFTileKeyToKey(t);
            return l ? (s = this.fc(),
            u = s + l + ".json",
            c = s + l + (o.mH ? ".webp" : ".png"),
            n = this.parent.protocol,
            void 0 !== this._N[l] && void 0 !== this.NN[l] ? (r(null, [this._N[l], this.NN[l]]),
            {
                cancel: noop$1
            }) : (e = this.LN.has(l),
            this.LN.SH(l, f = function(t, e) {
                e && (e.protocol = n),
                r(t, e)
            }
            ),
            e ? {
                cancel: function() {
                    h.NW(t)
                }
            } : this.LN.nS(l, function(r) {
                function n(t, e) {
                    r(null, e)
                }
                var i = 0
                  , a = []
                  , t = h.ON(u, function(t, e) {
                    t ? "404" !== t ? (console.log(t),
                    n(0, null)) : (a[0] = e ? {} : null,
                    h._N[l] = a[0],
                    2 == ++i && n(0, a)) : (a[0] = e,
                    h._N[l] = e,
                    2 == ++i && n(0, a))
                })
                  , e = h.IN(c, function(t, e) {
                    t || !e ? "404" !== t ? (console.log(t),
                    n(0, e)) : (a[1] = null,
                    h.NN[l] = a[1],
                    2 == ++i && n(0, a)) : !e || e.byteLength < 128 ? (a[1] = null,
                    h.NN[l] = a[1],
                    2 == ++i && n(0, a)) : o.imageBitmap ? ImageDataWraper.AV(e).then(function(t) {
                        "success" !== (t = new ImageDataWraper(c,t,{
                            imageBitmap: !0
                        })).status ? (console.log("createObjectURL fail"),
                        r("createObjectURL fail", null)) : (a[1] = t,
                        h.NN[l] = t,
                        2 == ++i && n(0, a))
                    }) : "success" !== (t = new ImageDataWraper(s,e)).status ? (console.log("createObjectURL fail"),
                    n(0, null)) : (a[1] = t,
                    h.NN[l] = t,
                    2 == ++i && n(0, a))
                });
                return "lesszoom10" !== l ? {
                    cancel: function() {
                        h.LN.kN(l, f),
                        h.LN.GN(l) || (t.abort(),
                        e.abort(),
                        h.LN.cancel(l)),
                        f("cancel", null)
                    }
                } : {
                    cancel: function() {
                        h.LN.kN(l, f),
                        f("cancel", null)
                    }
                }
            }))) : (console.log("!key"),
            r(null, [void 0, null]),
            {
                cancel: noop$1
            })
        }
        ,
        t.prototype.NW = function(t) {
            var e = this.NN[t];
            e && e.destroy(),
            delete this.NN[t],
            delete this._N[t]
        }
        ,
        t.prototype.zW = function(t) {
            this._N = {},
            this.NN = {},
            this.jN = ["://glyph.amap.com/sdf" + t + "/", "://glyph01.amap.com/sdf" + t + "/", "://glyph02.amap.com/sdf" + t + "/", "://glyph03.amap.com/sdf" + t + "/", "://glyph04.amap.com/sdf" + t + "/"]
        }
        ,
        t.prototype.ON = function(t, e) {
            return this.CN.send(t, {
                Me: "json",
                method: "get",
                qw: function(t) {
                    e(null, t || null)
                },
                Aw: function(t) {
                    e(t && t.message || "unknown error")
                }
            })
        }
        ,
        t.prototype.IN = function(t, e) {
            return this.CN.send(t, {
                Me: "arraybuffer",
                method: "get",
                qw: function(t) {
                    t ? e(null, t) : e("empty data", null)
                },
                Aw: function(t) {
                    e(t && t.message || "unknown error")
                }
            })
        }
        ,
        t.prototype.fc = function() {
            this.EN = this.EN % this.jN.length;
            var t = this.parent.protocol + this.jN[this.EN];
            return this.EN++,
            t
        }
        ,
        t
    }(), emptyObj = {}, SDFStaticTextureCache = function() {
        function t(t, e, r) {
            this.parent = t,
            this.DN = e,
            this.UN = r,
            this.RN = {},
            this.XN = {}
        }
        return t.prototype.xH = function(t, e) {
            void 0 === e && (e = !1);
            var r = staticSDFTileKeyToKey(t)
              , n = this.RN[r];
            if (e) {
                if (!n)
                    return;
                n.indexOf(t) < 0 && n.push(t)
            }
            return this.DN.getImage(r)
        }
        ,
        t.prototype.LB = function(t) {
            return t = staticSDFTileKeyToKey(t),
            this.XN[t] || emptyObj
        }
        ,
        t.prototype.bH = function(n, i, a, o) {
            var t, s = this, u = staticSDFTileKeyToKey(n);
            i.type === ImageDataWraperType.bitmap ? i.IV ? (t = this.DN.getImage(i.hash),
            o(null, t)) : this.DN.addImageBitmap(i.data, {
                url: u,
                cb: function(t, e) {
                    var r;
                    t || (i.destroy(),
                    s.RN[u] || (s.RN[u] = [],
                    s.XN[u] = a),
                    (r = s.RN[u]).indexOf(n) < 0 && r.push(n)),
                    o(t, e)
                }
            }) : this.DN.addImage(u, {
                url: i.data,
                cb: function(t, e) {
                    var r;
                    t || (s.RN[u] || (s.RN[u] = [],
                    s.XN[u] = a),
                    (r = s.RN[u]).indexOf(n) < 0 && r.push(n)),
                    o(t, e)
                }
            })
        }
        ,
        t.prototype.kH = function(t) {
            var e = staticSDFTileKeyToKey(t)
              , r = this.RN[e];
            r ? (0 <= (t = r.indexOf(t)) && r.splice(t, 1),
            0 === r.length && (this.DN.RH(e),
            this.UN.deleteTileStaticSDF(e),
            delete this.RN[e],
            delete this.XN[e])) : delete this.XN[e]
        }
        ,
        t
    }(), RenderThread = function() {
        function t(t) {
            this.Jv = 5,
            this.Qv = 0,
            this.Yv = !1,
            this.render = t.render,
            this.check = t.check
        }
        return t.prototype.Yf = function() {
            this.Yv || (0 < this.Jv && this.Kv ? (this.render(),
            this.Qv = Util.requestAnimFrame(this.Yf.bind(this))) : (this.Jv <= 0 || !this.Kv) && (this.Kv = !1,
            Util.cancelAnimFrame(this.Qv),
            this.Qv = 0,
            this.Qv || this.check() && (this.render(),
            this.setNeedUpdate(!0))),
            this.Jv--)
        }
        ,
        t.prototype.setNeedUpdate = function(t) {
            this.Jv = 5,
            t && !this.Kv && (this.Kv = t,
            Util.cancelAnimFrame(this.Qv),
            this.Qv = 0,
            this.to()),
            this.Kv = t
        }
        ,
        t.prototype.to = function() {
            this.Qv || (this.Qv = Util.requestAnimFrame(this.Yf.bind(this)))
        }
        ,
        t.prototype.destroy = function() {
            this.Yv = !0
        }
        ,
        t
    }();
    Uint8Array.prototype.fill || (Uint8Array.prototype.fill = Array.prototype.fill),
    Float32Array.prototype.slice || Object.defineProperty(Float32Array.prototype, "slice", {
        value: function(t, e) {
            return new Float32Array(Array.prototype.slice.call(this, t, e))
        }
    }),
    Float64Array.prototype.slice || Object.defineProperty(Float64Array.prototype, "slice", {
        value: function(t, e) {
            return new Float64Array(Array.prototype.slice.call(this, t, e))
        }
    }),
    exports.Ge = AMapStyleSource,
    exports.Bh = Actor,
    exports.OZ = AdaptorMap,
    exports.bb = BezierUtil,
    exports.tc = CONSTS,
    exports._n = Color,
    exports.ZQ = ComputeTileRange,
    exports.hL = Coordinate,
    exports.PY = DangerousFontSize,
    exports.La = DynamicVertice,
    exports.Event = Event,
    exports.iz = FillExtrusionBucket,
    exports.GeometryUtil = GeometryUtil,
    exports.rW = GeometryUtilCls,
    exports.x_ = HALF_WORLD_SIZE,
    exports.WQ = ImageDataWraper,
    exports.pZ = InnerClass,
    exports.eG = Labels,
    exports.LabelsRenderUtil = LabelsRenderUtil,
    exports.bG = LangManager,
    exports.LngLat = LngLat$2,
    exports.ZY = LngLat2TileInnerCoord,
    exports.za = LocalTileZoom,
    exports.Ra = LocalZoom,
    exports.MapboxLabelFormat = MapboxLabelFormat,
    exports.fQ = MapboxSegements,
    exports.bX = MapboxVTSourceWorker,
    exports.Module = Module,
    exports.NebulaLabelFormat = NebulaLabelFormat,
    exports._w = NebulaSegements,
    exports.pa = NebulaTile,
    exports.wa = NebulaTileCoord,
    exports.pw = Pbf,
    exports.Pixel = Pixel,
    exports.PlaneGeometryUtil = PlaneGeometryUtil,
    exports.kS = PlaneGeometryUtilInstance,
    exports.K_ = PolygonBucket,
    exports.oE = PolygonSegements,
    exports.J_ = PolylineBucket,
    exports.ProjectionManager = ProjectionManager,
    exports.tS = Queue,
    exports.Vs = RasterTile,
    exports.wY = RenderThread,
    exports.vG = SDFManagerBase,
    exports.jb = SDFManagerWorker,
    exports.LH = SDFStaticTextureCache,
    exports.e0 = SimpleCircleBucket,
    exports.Size = Size,
    exports.yp = SmartArrayBuffer,
    exports.xW = StaticSDFManagerWorker,
    exports.StyleParser = StyleParser,
    exports.Support = Browser,
    exports.vH = Task,
    exports.MY = TaskManager,
    exports.IH = TaskPool,
    exports.Gh = Tile,
    exports.ca = TileCoord,
    exports.V = transform,
    exports.Util = Util,
    exports.Sw = VectorTile,
    exports.tW = VectorTile$1,
    exports.LW = VectorTileSegements,
    exports.Yw = XHR,
    exports.dZ = __decorate,
    exports.Ei = __extends,
    exports.Pt = __spreadArrays,
    exports.assign = assign,
    exports.jw = calcTileMectorBounds,
    exports.clone = clone,
    exports.Ex = clone$1,
    exports.yn = cloneDeep,
    exports.create = create$3,
    exports.Il = create,
    exports.Dl = create$1,
    exports.Zl = create$2,
    exports.CZ = decodeStyle,
    exports.KQ = decodeTiles,
    exports.equals = equals$1,
    exports.Ru = equals,
    exports.every = every,
    exports.extend = extend,
    exports.filter = filter,
    exports.find = find,
    exports.findIndex = findIndex,
    exports.forEach = forEach,
    exports.vx = forIn,
    exports.Bu = fromValues$2,
    exports.xd = fromValues$3,
    exports.$Q = getMVTTileBbox,
    exports.vZ = getOutseaData,
    exports.Ol = getTranslation,
    exports.Ul = invert,
    exports.VB = isBezierCurve,
    exports.xs = isBounds,
    exports.sB = isCircleMarker,
    exports.isEmpty = isEmpty,
    exports.isEqual = isEqual,
    exports.isFunction = isFunction,
    exports.qG = isInnerLabelsLayer,
    exports.px = isLayer,
    exports.Bs = isLngLat,
    exports.iL = isLnglatLikeArray,
    exports.eL = isLnglatLikeArrayArray,
    exports.yL = isLnglatLikeArrayArrayArray,
    exports.vB = isNumber,
    exports.ys = isNumberArrayArray,
    exports.Ox = isNumberArrayArrayArray,
    exports.tL = isNumberArrayArrayArrayArray,
    exports.er = isOverlay,
    exports.RF = isOverlayGroup,
    exports.oy = isPixel,
    exports.GB = isPolyline,
    exports.ay = isSize,
    exports.FF = isVectorLayer,
    exports.jsonLngLatData = jsonLngLatData,
    exports.keys = keys,
    exports.labelsUtil = labelsUtil,
    exports.lcs = lcs,
    exports.lookAt = lookAt,
    exports.map = map,
    exports.multiply = multiply,
    exports.ou = ortho,
    exports.parseLngLatData = parseLngLatData,
    exports.perspective = perspective,
    exports.rbush = rbush_1,
    exports.scale = scale$1,
    exports.set = set$1,
    exports.Pl = set,
    exports.some = some,
    exports.XY = tileInnerCoord2LngLat,
    exports.Gu = transformMat4,
    exports.vector = vector,
    exports.zoomRange = zoomRange
}
)(sharedChunk);
(function(polyfill) {
    var _a, geoUtil = new polyfill.rW({}), LabelFormatMap = (_a = {},
    _a[polyfill.NebulaLabelFormat.id] = polyfill.NebulaLabelFormat,
    _a.nebula = polyfill.NebulaLabelFormat,
    _a[polyfill.MapboxLabelFormat.id] = polyfill.MapboxLabelFormat,
    _a), NebulaSourceWorker = function(g) {
        function t(A) {
            var i = g.call(this) || this;
            return i.parent = A,
            i.id = "nebula",
            i.sQ = {},
            i.aW = null,
            i.WW = 20,
            i.xQ = [],
            i.bQ = [],
            i.bind(),
            i
        }
        return polyfill.Ei(t, g),
        t.prototype.bind = function() {
            var c = this;
            this.on("styleReady", function() {
                var A = c.xQ.length;
                if (0 < A) {
                    for (var i = 0; i < A; i++) {
                        var g = (l = c.xQ[i]).data
                          , I = l.projectionId
                          , t = l.zoom
                          , B = l.viewMode
                          , Q = l.showBuildingBlock
                          , C = l.mS
                          , e = l.optimalZoom
                          , o = l.ZL
                          , E = l.cb
                          , h = l.url;
                        c.pQ(g, I, t, B, Q, C, e, o, E, h)
                    }
                    c.xQ = []
                }
                var a = c.bQ.length;
                if (0 < a) {
                    for (i = 0; i < a; i++) {
                        var l, n = (l = c.bQ[i]).CD, s = l.cQ, g = l.data, I = l.projectionId, E = l.cb, r = l.UQ, w = l.mH, o = l.ZL;
                        c.mQ(n, s, g, I, E, r, w, o)
                    }
                    c.bQ = []
                }
            })
        }
        ,
        t.prototype.bw = function(g, A, I, t, B, i, Q, C, e, o, E, h, a) {
            var l = this;
            if (void 0 === a && (a = !0),
            polyfill.Support.wasm && a) {
                if (!this.parent.PW)
                    return void h("not init");
                a = A.join(";"),
                a = this.parent.PW.transform('["' + a + '","' + E + '"]'),
                g = g + ("?key=" + this.parent.key) + "&msg=" + a
            } else
                g = g + ("?key=" + this.parent.key) + "&flds=" + E + "&t=" + A.join(";");
            return g += "&p=3",
            makeFetchRequest(this.parent.Uh, g, function(A, i) {
                A ? h(A) : setTimeout(function() {
                    l.pQ(i, B, I, C, e, Q, t, o, h, g)
                }, 10)
            })
        }
        ,
        t.prototype.pQ = function(A, g, I, t, B, Q, C, i, e, o) {
            var E = this;
            if (this.parent.vn && this.parent.vn._Q()) {
                polyfill.Support.amapRunTime && !polyfill.Support.amapRunTime["data-decode-begin"] && (polyfill.Support.amapRunTime["data-decode-begin"] = (new Date).getTime());
                for (var h = polyfill.KQ(new Uint8Array(A)), a = [], l = (polyfill.forEach(h.tiles, function(A) {
                    var i = new polyfill.Gh(new polyfill.ca(A.z,A.x,A.y))
                      , A = (i.data = E.kw(A, g, i),
                    E.xw(i, I),
                    E.zw(i, I, t, B),
                    E.nz(i, Q, C),
                    polyfill.Util.pW(A.t));
                    a.push({
                        zo: i.zo,
                        ba: i.data,
                        tag: A,
                        version: h.version || ""
                    })
                }),
                []), n = this.parent.vn, s = 0, r = a; s < r.length; s++) {
                    var w = r[s];
                    if (w && w.ba) {
                        if (w.ba.road) {
                            for (var c = [], y = 0, x = w.ba.road; y < x.length; y++) {
                                var p = x[y]
                                  , d = (d = n.dn(p.Fp, p.Ep, i)) ? d[1] : null;
                                p.id && d && d.fontSize && d.faceColor && (delete p.gw,
                                c.push({
                                    path: p.path,
                                    id: p.id
                                }))
                            }
                            w.ba.road = c
                        }
                        delete w.ba.poilabel,
                        delete w.ba.region,
                        delete w.ba.building,
                        delete w.ba.Mw
                    }
                    l.push(w)
                }
                polyfill.Support.amapRunTime && !polyfill.Support.amapRunTime["data-decode-end"] && (polyfill.Support.amapRunTime["data-decode-end"] = (new Date).getTime()),
                e(null, {
                    nebulaDatas: l,
                    amapRunTime: polyfill.Support.amapRunTime
                })
            } else
                this.xQ.push({
                    data: A,
                    projectionId: g,
                    zoom: I,
                    viewMode: t,
                    showBuildingBlock: B,
                    mS: Q,
                    optimalZoom: C,
                    ZL: i,
                    cb: e,
                    url: o
                })
        }
        ,
        t.prototype.mQ = function(A, i, g, I, t, B, Q, C) {
            this.parent.vn ? this.HQ(g, i, I, A, B, Q, C, t) : this.bQ.push({
                CD: A,
                cQ: i,
                data: g,
                projectionId: I,
                cb: t,
                UQ: B,
                mH: Q,
                ZL: C
            })
        }
        ,
        t.prototype.bW = function(A, g, I, t, B, Q) {
            var C = this;
            if (polyfill.Support.wasm) {
                if (!this.parent.PW)
                    return void Q("not init");
                var i = g.join(";")
                  , i = this.parent.PW.transform('["' + i + '","poi,roadname"]');
                A = A + ("?key=" + this.parent.key) + "&msg=" + i
            } else
                A = A + ("?key=" + this.parent.key) + "&flds=poi,roadname&t=" + g.join(";");
            A += "&p=3",
            this.WW = t;
            var e = -1 !== A.indexOf("/oversea")
              , o = new polyfill.vH;
            return o._H(makeFetchRequest(this.parent.Uh, A, function(A, i) {
                A ? Q(A) : setTimeout(function() {
                    C.mQ(g, e, i, I, Q, o, B, t)
                }, 10)
            })),
            {
                cancel: o.cancel
            }
        }
        ,
        t.prototype.HQ = function(A, i, g, I, t, B, Q, C) {
            for (var e = this, o = polyfill.KQ(new Uint8Array(A)), E = (!i && o.version && this.parent.GW.nebulaVersion !== o.version && (this.parent.GW.nebulaVersion = o.version,
            this.parent.GW.db = o.db,
            this.parent.IW.zW(this.parent.GW.db),
            this.parent.Uh.send("updateDataVersion", this.parent.GW.nebulaVersion)),
            []), h = (polyfill.forEach(o.tiles, function(A) {
                var i = new polyfill.Gh(new polyfill.ca(A.z,A.x,A.y))
                  , A = (i.data = e.kw(A, g, i),
                polyfill.Util.pW(A.t));
                E.push({
                    zo: i.zo,
                    ba: i.data,
                    tag: A
                })
            }),
            []), a = 0, l = E; a < l.length; a++) {
                var n, s, r = l[a];
                r && r.ba && (n = r.ba.roadName,
                s = r.ba.poilabel,
                delete r.ba.poilabel,
                delete r.ba.Mw,
                h.push({
                    zo: r.zo,
                    ba: {
                        roadName: n,
                        poilabel: s
                    },
                    tag: r.tag,
                    version: o.version || ""
                }))
            }
            if (h.length) {
                for (var w = {}, c = 0, y = h; c < y.length; c++) {
                    var d = new polyfill.Gh((x = y[c]).zo)
                      , p = polyfill.wa.ga(d.zo.x, d.zo.y, d.zo.z, "EPSG:3857")
                      , p = (d.type = "nebula",
                    i && (d.cQ = !0),
                    polyfill.lcs.getLocalByCoord([p[0], p[1]]));
                    d.localCoord = p,
                    d.data = x.ba;
                    (p = this.parent.params).showLabel;
                    var p = p.scale
                      , x = x.tag;
                    this.sQ[d.zo.key + "," + x] = {
                        tile: d,
                        params: {
                            scale: p,
                            tag: x
                        }
                    },
                    w[d.zo.key + "," + polyfill.Util.SD(x)] = !0
                }
                C(null, w)
            }
        }
        ,
        t.prototype.OW = function(A) {
            this.parent.Zw ? this.on("once", A) : A()
        }
        ,
        t.prototype.YE = function(A, i) {
            polyfill.map(polyfill.ZQ.ha(i.bounds, polyfill.ZQ.ra(i.zoom)), function(A) {
                return A.join(",")
            });
            var i = this.sQ
              , g = polyfill.Util.getOptimalZoom(this.WW);
            A(i, {
                ZL: this.WW,
                optimalZoom: g,
                cb: function() {}
            }),
            this.sQ = {}
        }
        ,
        t.prototype.kw = function(A, i, g) {
            var n = this
              , I = {}
              , s = polyfill.ProjectionManager.getProjection(i)
              , i = polyfill.wa.ga(A.x, A.y, A.z, "EPSG:3857")
              , r = polyfill.lcs.getLocalByCoord([i[0], i[1]]).center
              , w = (g.Mw = r,
            g.Ro = i,
            g.zo.z);
            return polyfill.forEach(A.layers, function(h) {
                var A, a = [], l = t.Wa[h.type];
                polyfill.forEach(h.d[l], function(o) {
                    o.items.sort(n.A0);
                    var E = n.parent.vn.mW(o.mainkey, o.subkey, w);
                    polyfill.forEach(o.items, function(A) {
                        switch (l) {
                        case "road":
                            for (var i = 0; i < A.path.length; i += 2) {
                                var g = A.path[i]
                                  , I = A.path[i + 1]
                                  , t = polyfill.XY(h, o.resolution, g, I)
                                  , t = s.project(t[0], t[1]);
                                w >= polyfill.Ra && (t[0] -= r[0],
                                t[1] -= r[1]),
                                A.path[i] = t[0],
                                A.path[i + 1] = t[1]
                            }
                            break;
                        case "region":
                            for (var B = A.path, Q = 0; Q < B.length; Q += 1) {
                                for (var C = B[Q].path, e = [], i = 0; i < C.length; i += 2)
                                    g = C[i],
                                    I = C[i + 1],
                                    t = polyfill.XY(h, o.resolution, g, I),
                                    e[i] = t[0],
                                    e[i + 1] = t[1],
                                    t = s.project(t[0], t[1]),
                                    w >= polyfill.Ra && (t[0] -= r[0],
                                    t[1] -= r[1]),
                                    C[i] = t[0],
                                    C[i + 1] = t[1];
                                B[Q] = C
                            }
                            break;
                        case "building":
                            for (B = A.path,
                            A.oW = [],
                            Q = 0; Q < B.length; Q += 1) {
                                for (C = B[Q].path,
                                e = [],
                                i = 0; i < C.length; i += 2)
                                    g = C[i],
                                    I = C[i + 1],
                                    t = polyfill.XY(h, o.resolution, g, I),
                                    e[i] = t[0],
                                    e[i + 1] = t[1],
                                    t = s.project(t[0], t[1]),
                                    w >= polyfill.Ra && (t[0] -= r[0],
                                    t[1] -= r[1]),
                                    C[i] = t[0],
                                    C[i + 1] = t[1];
                                B[Q] = C,
                                A.oW[Q] = e
                            }
                            break;
                        case "poilabel":
                        case "roadName":
                            if (A.pos && (e = polyfill.XY(h, o.resolution, A.pos[0], A.pos[1]),
                            A.pos = s.project(e[0], e[1])),
                            A.path)
                                if (A.shield)
                                    e = polyfill.XY(h, o.resolution, A.path[0], A.path[1]),
                                    t = s.project(e[0], e[1]),
                                    w >= polyfill.Ra && (t[0] -= r[0],
                                    t[1] -= r[1]),
                                    A.path[0] = t[0],
                                    A.path[1] = t[1];
                                else
                                    for (i = 0; i < A.path.length; i += 2)
                                        g = A.path[i],
                                        I = A.path[i + 1],
                                        t = polyfill.XY(h, o.resolution, g, I),
                                        t = s.project(t[0], t[1]),
                                        w >= polyfill.Ra && (t[0] -= r[0],
                                        t[1] -= r[1]),
                                        A.path[i] = t[0],
                                        A.path[i + 1] = t[1]
                        }
                        A.du = o.resolution,
                        A.Fp = o.mainkey,
                        A.Ep = o.subkey,
                        A.zIndex = n.parent.vn.Lw(o.mainkey, o.subkey),
                        A.lineCap = E[0],
                        A.RQ = E[1],
                        A.gw = {
                            z: h.z,
                            y: h.y,
                            x: h.x
                        },
                        a.push(A)
                    })
                }),
                "poilabel" !== l ? n.Tw(a) : n.Na(a),
                "poilabel" === l ? (A = h.z + "-" + h.x + "-" + h.y,
                I[l] ? I[l][A] ? I[l][A].push.apply(I[l][A], a) : I[l][A] = a : (I[l] = {},
                I[l][A] = a)) : I[l] ? I[l].push.apply(I[l], a) : I[l] = a
            }),
            I.Mw = r,
            I
        }
        ,
        t.prototype.A0 = function(A, i) {
            return A.minzoom - i.minzoom || A.maxzoom - i.maxzoom
        }
        ,
        t.prototype.Tw = function(A) {
            return A.sort(function(A, i) {
                return A.zIndex - i.zIndex
            }),
            A
        }
        ,
        t.prototype.Na = function(A) {
            return A.sort(function(A, i) {
                return A.rank - i.rank
            }),
            A
        }
        ,
        t.prototype.xw = function(A, i) {
            var g = A.data
              , I = new polyfill._w;
            if (g.Uc = I,
            !g.$c) {
                g.$c = new polyfill.J_,
                g.road = g.road || [];
                var t = A.Mw.slice(0);
                if (A.zo.z <= polyfill.za && (t[0] = 0,
                t[1] = 0),
                g.road.push({
                    name: "",
                    rank: 1,
                    maxzoom: polyfill.zoomRange[1],
                    minzoom: polyfill.zoomRange[0],
                    path: [A.Ro[0] - t[0], A.Ro[1] - t[1], A.Ro[2] - t[0], A.Ro[1] - t[1], A.Ro[2] - t[0], A.Ro[3] - t[1], A.Ro[0] - t[0], A.Ro[3] - t[1], A.Ro[0] - t[0], A.Ro[1] - t[1]],
                    Fp: -2,
                    Ep: -2,
                    shield: "",
                    shieldType: 0,
                    du: 13,
                    lineCap: "butt",
                    RQ: "butt"
                }),
                g.road)
                    for (var B = 0, Q = g.road; B < Q.length; B++) {
                        var C = Q[B]
                          , e = C.path
                          , o = (e = g.$c.hb(e, {
                            X_: "butt" === C.lineCap ? 0 : .9,
                            lineCap: C.lineCap,
                            lineJoin: "auto"
                        })).Iw
                          , e = e.distance;
                        0 < o && (I.add(C.Fp, C.Ep, o, C.minzoom, C.maxzoom),
                        C.distance = e)
                    }
            }
        }
        ,
        t.prototype.zw = function(A, J, U, i) {
            var g = A.data
              , I = new polyfill._w;
            if (g.Oc = I,
            g.Fc = new polyfill._w,
            !g.Dc) {
                g.Dc = new polyfill.K_,
                g.region = g.region || [];
                var t = A.Mw.slice(0);
                if (A.zo.z <= polyfill.za && (t[0] = 0,
                t[1] = 0),
                g.region.unshift({
                    maxzoom: polyfill.zoomRange[1],
                    minzoom: polyfill.zoomRange[0],
                    path: [[A.Ro[0] - t[0], A.Ro[1] - t[1], A.Ro[2] - t[0], A.Ro[1] - t[1], A.Ro[2] - t[0], A.Ro[3] - t[1], A.Ro[0] - t[0], A.Ro[3] - t[1], A.Ro[0] - t[0], A.Ro[1] - t[1]]],
                    Fp: 30001,
                    Ep: 1
                }),
                g.region)
                    for (var B = 0, Q = g.region; B < Q.length; B++)
                        for (var C = Q[B], e = 0, o = C.path; e < o.length; e++)
                            (x = o[e]).push(x[0], x[1]),
                            0 < (v = g.Dc.Nx(x)) && I.add(C.Fp, C.Ep, v, C.minzoom, C.maxzoom);
                if (!i && g.building) {
                    if (g.FD)
                        return;
                    g.FD = new polyfill.K_,
                    g.BD = new polyfill._w;
                    for (var E = g.BD, h = 0, a = g.building; h < a.length; h++) {
                        for (var l = a[h], s = (n = polyfill.jw(l.gw.z, l.gw.x, l.gw.y))[0], r = n[1], w = n[2], n = n[3], L = (A.Mw && (s -= A.Mw[0],
                        w -= A.Mw[0],
                        r -= A.Mw[1],
                        n -= A.Mw[1]),
                        Math.floor(s)), H = Math.floor(w), K = Math.floor(r), m = Math.floor(n), c = 0, y = l.path; c < y.length; c++) {
                            var x = y[c];
                            0 < (v = g.FD.Nx(x)) && E.add(l.Fp, l.Ep, v, l.minzoom, l.maxzoom, l.ew || "indoor_out_building")
                        }
                        for (var d = 0, p = l.path; d < p.length; d++) {
                            for (var D = p[d], x = (D.push(D[0], D[1]),
                            []), f = 0, R = D.length; f < R - 2; f += 2)
                                x.push(polyfill.xd(D[f], D[f + 1])),
                                x.push(polyfill.xd(D[f + 2], D[f + 3]));
                            for (var u = [], f = 0, R = x.length; f < R; f += 2) {
                                var v, G = x[f][0], S = x[f][1], q = x[f + 1][0], W = x[f + 1][1], F = Math.floor(G), b = Math.floor(S);
                                (G !== q || F !== L && F !== H) && (S !== W || b !== K && b !== m) ? u.push(x[f], x[f + 1]) : (0 < (v = g.Dc.Ew(u)) && g.Fc.add(l.Fp, l.Ep, v, l.minzoom, l.maxzoom, l.ew || "indoor_out_building"),
                                u = [])
                            }
                            0 < u.length && 0 < (v = g.Dc.Ew(u)) && g.Fc.add(l.Fp, l.Ep, v, l.minzoom, l.maxzoom, l.ew)
                        }
                    }
                }
                if (g.building) {
                    for (var k = [], M = 0, Y = g.building; M < Y.length; M++)
                        if ((l = Y[M]).ew)
                            if (-1 < l.ew.indexOf("|"))
                                for (var N = l.ew.split("|"), f = 0; f < N.length; f++)
                                    k.push(N[f]);
                            else
                                k.push(l.ew);
                    g.indoorInfo || (g.indoorInfo = []),
                    g.indoorInfo = k
                }
            }
        }
        ,
        t.prototype.nz = function(A, i, g) {
            void 0 === i && (i = {});
            var I = A.data;
            if (I.C_ = new polyfill._w,
            !I.A_) {
                I.A_ = new polyfill.iz;
                var t = i.hideWithoutStyle
                  , B = i.areas;
                if (I.building)
                    for (var Q = 0, C = I.building; Q < C.length; Q++)
                        for (var e = C[Q], o = 0; o < e.path.length; o++) {
                            for (var E = e.path[o], h = e.oW[o], a = (E.push(E[0], E[1]),
                            h.push(h[0], h[1]),
                            []), l = 0; l < h.length; l += 2)
                                a.push([h[l], h[l + 1]]);
                            if (B) {
                                for (var n, s = !1, r = !1, w = {}, c = 0; c < B.length; c++) {
                                    var y = B[c]
                                      , x = y.path;
                                    geoUtil.isRingInRing(a, x) && (s = !0,
                                    !y.visible && void 0 !== y.visible || (r = !0,
                                    w = {
                                        roofColor: polyfill.Util.color2RgbaArray(y.color1),
                                        wallColor: polyfill.Util.color2RgbaArray(y.color2)
                                    }))
                                }
                                !s && t || s && !r || 0 < (n = I.A_.tz(E, e.height)) && I.C_.add(e.Fp, e.Ep, n, e.minzoom, e.maxzoom, e.ew, w.roofColor, w.wallColor)
                            } else
                                0 < (n = I.A_.tz(E, e.height)) && I.C_.add(e.Fp, e.Ep, n, e.minzoom, e.maxzoom, e.ew)
                        }
            }
        }
        ,
        t.prototype.hQ = function(A, i) {
            if (A)
                for (var g = this.SQ(A) || [], I = 0, t = g = new LabelFormatMap[A.type]({
                    vn: this.parent.vn
                }).DQ(g, {
                    zoom: i
                }); I < t.length; I++) {
                    var B = t[I]
                      , Q = B.CO;
                    B.EG || (B.EG = {});
                    for (var C = 0, e = Q; C < e.length; C++) {
                        var o = e[C]
                          , E = this.parent.R_.mz(o);
                        B.EG[o] = E
                    }
                }
            return g
        }
        ,
        t.prototype.SQ = function(A) {
            return A.data && A.data.roadName || A.Dh
        }
        ,
        t.Pw = [1, 0, 1, 0],
        t.Wa = {
            0: "poilabel",
            1: "road",
            2: "region",
            3: "building",
            4: "roadName"
        },
        t
    }(polyfill.Event), hasWarning = !1;
    function makeFetchRequest(A, i, g) {
        var I, t, B;
        return !polyfill.Support.safari && !polyfill.Support.AQ && !polyfill.Support.gQ && self.fetch && self.Request && self.AbortController && self.Request.prototype.hasOwnProperty("signal") ? (t = (I = new AbortController).signal,
        t = new self.Request(i,{
            method: "GET",
            referrer: "null" === self.location.origin ? void 0 : self.location.origin,
            signal: t
        }),
        polyfill.Support.amapRunTime && !polyfill.Support.amapRunTime["data-request"] && (polyfill.Support.amapRunTime["data-request"] = (new Date).getTime()),
        fetch(t).then(function(A) {
            return polyfill.Support.amapRunTime && !polyfill.Support.amapRunTime["data-loaded"] && (polyfill.Support.amapRunTime["data-loaded"] = (new Date).getTime()),
            "application/x-protobuf" === A.headers.get("content-type") ? A.arrayBuffer() : A.json()
        }).then(function(A) {
            A.info ? hasWarning || (hasWarning = !0,
            console.log(i),
            console.log("<AMap JSAPI> KEY异常，错误信息：" + A.info)) : g(null, A)
        }).catch(function(A) {
            "AbortError" !== A.name && g(A.message || "unknown error")
        }),
        {
            cancel: function() {
                I.abort()
            }
        }) : B = A.send("request", i, function(A, i) {
            A ? ("<cancel>" === A && B && B.cancel && B.cancel(),
            B = void 0,
            g(A)) : (B = void 0,
            g(null, i))
        })
    }
    var DistrictSourceWorker = function() {
        function DistrictSourceWorker(A) {
            this.parent = A,
            this.fW = {}
        }
        return DistrictSourceWorker.prototype.bw = function(A, i, g, I, t) {
            var B = this
              , Q = new XMLHttpRequest;
            return Q.onreadystatechange = function() {
                var A;
                4 !== Q.readyState || 200 !== Q.status && 204 !== Q.status || (A = new polyfill.tW(new polyfill.pw(new Uint8Array(Q.response))),
                A = B.Ow(A, {
                    x: i.x,
                    y: i.y,
                    z: i.z,
                    projectionId: g,
                    tileSize: I
                }),
                t(null, polyfill.Ln({
                    zo: i
                }, A)))
            }
            ,
            Q.open("GET", A, !0),
            Q.responseType = "arraybuffer",
            Q.send(),
            {
                cancel: function() {
                    Q.abort()
                }
            }
        }
        ,
        DistrictSourceWorker.prototype.Ow = function(o, A) {
            var g = A.x
              , I = A.y
              , t = A.z
              , B = A.tileSize
              , Q = A.projectionId
              , A = (o.z = t,
            o.x = g,
            o.y = I,
            polyfill.ProjectionManager.getProjection(Q).getResolution(t))
              , C = (o.Ro = polyfill.$Q(g, I, t, A, B),
            o.zS = polyfill.lcs.getLocalByCoord([o.Ro[0], o.Ro[1]]),
            polyfill.ProjectionManager.getProjection(Q).getResolution(t));
            return polyfill.vx(o.layers, function(e) {
                var A = e.Cw
                  , i = (e.Ah = [],
                e.scale = C * B / e.extent,
                polyfill.V[Q].Xs(B * g, B * I, t));
                e.ox = i[0],
                e.oy = i[1],
                polyfill.forEach(A, function(A, i) {
                    if ((A = e.Gw(i)).Dw(),
                    e.Ah.push(A),
                    A.lines && 0 < A.lines.length) {
                        A.Rw = [];
                        for (var g = 0, I = A.lines.length; g < I; g++) {
                            for (var t = [], B = 0, Q = A.lines[g].length; B < Q; B++) {
                                var C = [e.ox + e.scale * A.lines[g][B][0] - o.zS.center[0], e.oy - e.scale * A.lines[g][B][1] - o.zS.center[1]];
                                t.push(C)
                            }
                            A.Rw.push(t)
                        }
                    }
                })
            }),
            this.uW(o),
            this.xw(o),
            this.zw(o),
            o
        }
        ,
        DistrictSourceWorker.prototype.uW = function(A) {
            var i, g = [], I = [];
            for (i in A.layers)
                if (A.layers.hasOwnProperty(i))
                    for (var t = A.layers[i], B = 0; B < t.Ah.length; B += 1) {
                        var Q = t.Ah[B];
                        if (3 == +Q.type && Q.Rw) {
                            for (var C = Q.Rw, e = [], o = 0; o < C.length; o++)
                                polyfill.kS.isClockwise(C[o]) ? e.push([o]) : e.length && e[e.length - 1].push(o);
                            for (var E = 0; E < e.length; E++) {
                                var h = e[E];
                                if (1 < h.length) {
                                    for (var a = [], l = [], n = 0; n < h.length; n++) {
                                        var s = C[h[n]];
                                        0 < n && a.push(l.length / 2);
                                        for (var r = 0; r < s.length; r++) {
                                            var w = s[r];
                                            l.push(w[0], w[1])
                                        }
                                    }
                                    g.push({
                                        properties: Q.properties,
                                        path: l,
                                        LQ: a
                                    })
                                } else {
                                    for (l = [],
                                    s = C[h[0]],
                                    r = 0; r < s.length; r++) {
                                        var c = s[r];
                                        l.push(c[0], c[1])
                                    }
                                    g.push({
                                        properties: Q.properties,
                                        path: l
                                    })
                                }
                            }
                        } else if (3 !== Q.type && Q.Rw)
                            for (var y = 0; y < Q.Rw.length; y++)
                                I.push({
                                    properties: Q.properties,
                                    path: Q.Rw[y]
                                });
                        this.cW(Q)
                    }
            A.polygons = g,
            A.Dh = I,
            delete A.layers
        }
        ,
        DistrictSourceWorker.prototype.xw = function(A) {
            if (!A || !A.$c) {
                var i = new polyfill.LW;
                if (!A.$c && (A.Uc = i,
                A.$c = new polyfill.J_,
                A.Dh))
                    for (var g = 0, I = A.Dh; g < I.length; g++) {
                        var t = I[g]
                          , B = JSON.stringify(t.properties)
                          , C = (Q = A.$c.g0(t.path, {
                            X_: 0,
                            lineJoin: "round",
                            lineCap: "butt"
                        })).Iw
                          , Q = Q.distance;
                        0 < C && (i.add(B, 0, C, 0, 22),
                        t.distance = Q)
                    }
            }
        }
        ,
        DistrictSourceWorker.prototype.zw = function(A) {
            if (!A || !A.Dc) {
                var i = new polyfill.LW;
                A.Oc = i,
                A.Dc = new polyfill.K_;
                for (var g = 0, I = A.polygons; g < I.length; g++) {
                    var t = I[g]
                      , B = JSON.stringify(t.properties);
                    0 < (t = A.Dc.Nx(t.path, t.LQ)) && i.add(B, 0, t, 0, 22)
                }
            }
        }
        ,
        DistrictSourceWorker.prototype.dW = function(A) {
            switch (A) {
            case 0:
            case 1:
                return "Nation_Border_China";
            case 2:
                return "Coastline_China";
            case 3:
            case 4:
                return "Province_Border_China";
            case 5:
                return "City_Border_China";
            case 6:
                return "County_Border_China";
            case 7:
            case 8:
                return "Nation_Border_Foreign";
            case 9:
                return "Coastline_Foreign";
            case 10:
            case 11:
                return "Nation_Border_Foreign";
            case 12:
                return "Province_Border_Foreign";
            default:
                return ""
            }
        }
        ,
        DistrictSourceWorker.prototype.sW = function(code) {
            return this.fW[code] || (this.fW[code] = eval("'" + code.replace(/\//g, "\\u") + "'")),
            this.fW[code]
        }
        ,
        DistrictSourceWorker.prototype.cW = function(A) {
            A.properties.NAME_CHN && (A.properties.NAME_CHN = this.sW(A.properties.NAME_CHN.trim())),
            A.properties.NAME_ENG && (A.properties.NAME_ENG = A.properties.NAME_ENG.trim()),
            A.properties.level && (A.properties.level = A.properties.level.trim()),
            A.properties.citycode && A.properties.citycode.length && (A.properties.citycode = A.properties.citycode.trim()),
            A.properties.type_ = +A.properties.type,
            A.properties.feature_type_ = +A.type,
            A.properties.type = this.dW(+A.properties.type)
        }
        ,
        DistrictSourceWorker
    }(), mbStyle = {
        Hr: void 0,
        _r: {},
        kr: {
            "pedestrian-polygon": {
                width: 128,
                height: 128,
                x: 0,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "turning-circle-outline": {
                width: 92,
                height: 92,
                x: 128,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "turning-circle": {
                width: 84,
                height: 84,
                x: 0,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-truck-2": {
                width: 40,
                height: 80,
                x: 84,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-truck-3": {
                width: 52,
                height: 80,
                x: 124,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-business-2": {
                width: 40,
                height: 76,
                x: 176,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-business-3": {
                width: 52,
                height: 76,
                x: 216,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-bypass-2": {
                width: 40,
                height: 76,
                x: 268,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-bypass-3": {
                width: 52,
                height: 76,
                x: 308,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-truck-2": {
                width: 40,
                height: 76,
                x: 360,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-truck-3": {
                width: 52,
                height: 76,
                x: 400,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "ae-f-route-3": {
                width: 48,
                height: 54,
                x: 452,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "ae-s-route-4": {
                width: 76,
                height: 52,
                x: 220,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "pe-national-2": {
                width: 36,
                height: 52,
                x: 296,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "pe-national-3": {
                width: 44,
                height: 52,
                x: 332,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "ae-national-3": {
                width: 52,
                height: 50,
                x: 376,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "ae-national-4": {
                width: 64,
                height: 50,
                x: 428,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "ae-d-route-3": {
                width: 48,
                height: 48,
                x: 0,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "ae-d-route-4": {
                width: 60,
                height: 48,
                x: 48,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "tw-provincial-2": {
                width: 44,
                height: 48,
                x: 108,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "tw-provincial-3": {
                width: 56,
                height: 48,
                x: 152,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "tw-provincial-expy-2": {
                width: 44,
                height: 48,
                x: 208,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "tw-provincial-expy-3": {
                width: 56,
                height: 48,
                x: 252,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "za-provincial-2": {
                width: 48,
                height: 48,
                x: 308,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "cn-nths-expy-2": {
                width: 40,
                height: 46,
                x: 356,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "cn-nths-expy-3": {
                width: 52,
                height: 46,
                x: 396,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "cn-nths-expy-4": {
                width: 64,
                height: 46,
                x: 448,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "cn-nths-expy-5": {
                width: 76,
                height: 46,
                x: 0,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "cn-provincial-expy-2": {
                width: 40,
                height: 46,
                x: 76,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "cn-provincial-expy-3": {
                width: 52,
                height: 46,
                x: 116,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "cn-provincial-expy-4": {
                width: 64,
                height: 46,
                x: 168,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "cn-provincial-expy-5": {
                width: 76,
                height: 46,
                x: 232,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "br-federal-3": {
                width: 52,
                height: 44,
                x: 308,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "hk-strategic-route-2": {
                width: 36,
                height: 44,
                x: 360,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "in-national-2": {
                width: 32,
                height: 44,
                x: 396,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "in-national-3": {
                width: 40,
                height: 44,
                x: 428,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "in-national-4": {
                width: 48,
                height: 44,
                x: 0,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "in-state-2": {
                width: 32,
                height: 44,
                x: 48,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "in-state-3": {
                width: 40,
                height: 44,
                x: 80,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "kr-natl-expy-2": {
                width: 40,
                height: 44,
                x: 120,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "kr-natl-expy-3": {
                width: 52,
                height: 44,
                x: 160,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "mx-federal-2": {
                width: 36,
                height: 44,
                x: 212,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "mx-federal-3": {
                width: 46,
                height: 44,
                x: 248,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "mx-federal-4": {
                width: 56,
                height: 44,
                x: 294,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "mx-state-2": {
                width: 36,
                height: 44,
                x: 350,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "mx-state-3": {
                width: 46,
                height: 44,
                x: 386,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "mx-state-4": {
                width: 56,
                height: 44,
                x: 432,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "pe-regional-3": {
                width: 46,
                height: 44,
                x: 0,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "pe-regional-4": {
                width: 56,
                height: 44,
                x: 46,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "tw-national-2": {
                width: 42,
                height: 44,
                x: 102,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-2": {
                width: 40,
                height: 44,
                x: 144,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-3": {
                width: 52,
                height: 44,
                x: 184,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-4": {
                width: 64,
                height: 44,
                x: 236,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-business-2": {
                width: 40,
                height: 44,
                x: 300,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-business-3": {
                width: 52,
                height: 44,
                x: 340,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-duplex-4": {
                width: 64,
                height: 44,
                x: 392,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "us-interstate-duplex-5": {
                width: 76,
                height: 44,
                x: 0,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "airfield-15": {
                width: 42,
                height: 42,
                x: 456,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "airport-15": {
                width: 42,
                height: 42,
                x: 76,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "alcohol-shop-15": {
                width: 42,
                height: 42,
                x: 118,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "american-football-15": {
                width: 42,
                height: 42,
                x: 160,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "amusement-park-15": {
                width: 42,
                height: 42,
                x: 202,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "aquarium-15": {
                width: 42,
                height: 42,
                x: 244,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "art-gallery-15": {
                width: 42,
                height: 42,
                x: 286,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "attraction-15": {
                width: 42,
                height: 42,
                x: 328,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "au-tourist-2": {
                width: 40,
                height: 42,
                x: 370,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "au-tourist-3": {
                width: 56,
                height: 42,
                x: 410,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "bakery-15": {
                width: 42,
                height: 42,
                x: 466,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "bank-15": {
                width: 42,
                height: 42,
                x: 468,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "bar-15": {
                width: 42,
                height: 42,
                x: 0,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "basketball-15": {
                width: 42,
                height: 42,
                x: 42,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "beach-15": {
                width: 42,
                height: 42,
                x: 84,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "beer-15": {
                width: 42,
                height: 42,
                x: 126,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "bicycle-15": {
                width: 42,
                height: 42,
                x: 168,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "bowling-alley-15": {
                width: 42,
                height: 42,
                x: 210,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "bridge-15": {
                width: 42,
                height: 42,
                x: 252,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "cafe-15": {
                width: 42,
                height: 42,
                x: 294,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "campsite-15": {
                width: 42,
                height: 42,
                x: 336,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "car-15": {
                width: 42,
                height: 42,
                x: 378,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "car-rental-15": {
                width: 42,
                height: 42,
                x: 420,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "car-repair-15": {
                width: 42,
                height: 42,
                x: 462,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "casino-15": {
                width: 42,
                height: 42,
                x: 504,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "castle-15": {
                width: 42,
                height: 42,
                x: 546,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "cemetery-15": {
                width: 42,
                height: 42,
                x: 588,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "charging-station-15": {
                width: 42,
                height: 42,
                x: 630,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "cinema-15": {
                width: 42,
                height: 42,
                x: 672,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "clothing-store-15": {
                width: 42,
                height: 42,
                x: 714,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "college-15": {
                width: 42,
                height: 42,
                x: 756,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "communications-tower-15": {
                width: 42,
                height: 42,
                x: 798,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "confectionery-15": {
                width: 42,
                height: 42,
                x: 840,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "convenience-15": {
                width: 42,
                height: 42,
                x: 882,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "dentist-15": {
                width: 42,
                height: 42,
                x: 924,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "doctor-15": {
                width: 42,
                height: 42,
                x: 966,
                y: 438,
                pixelRatio: 2,
                visible: !0
            },
            "dog-park-15": {
                width: 42,
                height: 42,
                x: 488,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "drinking-water-15": {
                width: 42,
                height: 42,
                x: 530,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "embassy-15": {
                width: 42,
                height: 42,
                x: 572,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "farm-15": {
                width: 42,
                height: 42,
                x: 614,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "fast-food-15": {
                width: 42,
                height: 42,
                x: 656,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "fire-station-15": {
                width: 42,
                height: 42,
                x: 698,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "fitness-centre-15": {
                width: 42,
                height: 42,
                x: 740,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "fuel-15": {
                width: 42,
                height: 42,
                x: 782,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "furniture-15": {
                width: 42,
                height: 42,
                x: 824,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "garden-15": {
                width: 42,
                height: 42,
                x: 866,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "globe-15": {
                width: 42,
                height: 42,
                x: 908,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "golf-15": {
                width: 42,
                height: 42,
                x: 950,
                y: 306,
                pixelRatio: 2,
                visible: !0
            },
            "grocery-15": {
                width: 42,
                height: 42,
                x: 498,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "harbor-15": {
                width: 42,
                height: 42,
                x: 540,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "hardware-15": {
                width: 42,
                height: 42,
                x: 582,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "heliport-15": {
                width: 42,
                height: 42,
                x: 624,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "horse-riding-15": {
                width: 42,
                height: 42,
                x: 666,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "hospital-15": {
                width: 42,
                height: 42,
                x: 708,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "ice-cream-15": {
                width: 42,
                height: 42,
                x: 750,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "information-15": {
                width: 42,
                height: 42,
                x: 792,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "jewelry-store-15": {
                width: 42,
                height: 42,
                x: 834,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "laundry-15": {
                width: 42,
                height: 42,
                x: 876,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "library-15": {
                width: 42,
                height: 42,
                x: 918,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "lodging-15": {
                width: 42,
                height: 42,
                x: 960,
                y: 350,
                pixelRatio: 2,
                visible: !0
            },
            "mobile-phone-15": {
                width: 42,
                height: 42,
                x: 508,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "monument-15": {
                width: 42,
                height: 42,
                x: 550,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "mountain-15": {
                width: 42,
                height: 42,
                x: 592,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "museum-15": {
                width: 42,
                height: 42,
                x: 634,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "music-15": {
                width: 42,
                height: 42,
                x: 676,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "optician-15": {
                width: 42,
                height: 42,
                x: 718,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "park-15": {
                width: 42,
                height: 42,
                x: 760,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "parking-15": {
                width: 42,
                height: 42,
                x: 802,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "parking-garage-15": {
                width: 42,
                height: 42,
                x: 844,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "pharmacy-15": {
                width: 42,
                height: 42,
                x: 886,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "picnic-site-15": {
                width: 42,
                height: 42,
                x: 928,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "pitch-15": {
                width: 42,
                height: 42,
                x: 970,
                y: 394,
                pixelRatio: 2,
                visible: !0
            },
            "place-of-worship-15": {
                width: 42,
                height: 42,
                x: 510,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "playground-15": {
                width: 42,
                height: 42,
                x: 552,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "police-15": {
                width: 42,
                height: 42,
                x: 594,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "post-15": {
                width: 42,
                height: 42,
                x: 636,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "prison-15": {
                width: 42,
                height: 42,
                x: 678,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "ranger-station-15": {
                width: 42,
                height: 42,
                x: 720,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "religious-buddhist-15": {
                width: 42,
                height: 42,
                x: 762,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "religious-christian-15": {
                width: 42,
                height: 42,
                x: 804,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "religious-jewish-15": {
                width: 42,
                height: 42,
                x: 846,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "religious-muslim-15": {
                width: 42,
                height: 42,
                x: 888,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-15": {
                width: 42,
                height: 42,
                x: 930,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-noodle-15": {
                width: 42,
                height: 42,
                x: 972,
                y: 260,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-pizza-15": {
                width: 42,
                height: 42,
                x: 512,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-seafood-15": {
                width: 42,
                height: 42,
                x: 554,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "rocket-15": {
                width: 42,
                height: 42,
                x: 596,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "school-15": {
                width: 42,
                height: 42,
                x: 638,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "shoe-15": {
                width: 42,
                height: 42,
                x: 680,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "shop-15": {
                width: 42,
                height: 42,
                x: 722,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "skateboard-15": {
                width: 42,
                height: 42,
                x: 764,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "slipway-15": {
                width: 42,
                height: 42,
                x: 806,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "stadium-15": {
                width: 42,
                height: 42,
                x: 848,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "suitcase-15": {
                width: 42,
                height: 42,
                x: 890,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "swimming-15": {
                width: 42,
                height: 42,
                x: 932,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "table-tennis-15": {
                width: 42,
                height: 42,
                x: 974,
                y: 212,
                pixelRatio: 2,
                visible: !0
            },
            "tennis-15": {
                width: 42,
                height: 42,
                x: 500,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "theatre-15": {
                width: 42,
                height: 42,
                x: 542,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "toilet-15": {
                width: 42,
                height: 42,
                x: 584,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "town-hall-15": {
                width: 42,
                height: 42,
                x: 626,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "veterinary-15": {
                width: 42,
                height: 42,
                x: 668,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "viewpoint-15": {
                width: 42,
                height: 42,
                x: 710,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "volcano-15": {
                width: 42,
                height: 42,
                x: 752,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "volleyball-15": {
                width: 42,
                height: 42,
                x: 794,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "watch-15": {
                width: 42,
                height: 42,
                x: 836,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "waterfall-15": {
                width: 42,
                height: 42,
                x: 878,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "watermill-15": {
                width: 42,
                height: 42,
                x: 920,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "windmill-15": {
                width: 42,
                height: 42,
                x: 962,
                y: 128,
                pixelRatio: 2,
                visible: !0
            },
            "zoo-15": {
                width: 42,
                height: 42,
                x: 492,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-highway-2": {
                width: 40,
                height: 40,
                x: 534,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-highway-3": {
                width: 52,
                height: 40,
                x: 574,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-route-2": {
                width: 40,
                height: 40,
                x: 626,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-route-3": {
                width: 52,
                height: 40,
                x: 666,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-route-4": {
                width: 64,
                height: 40,
                x: 718,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-route-5": {
                width: 76,
                height: 40,
                x: 782,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-national-route-6": {
                width: 86,
                height: 40,
                x: 858,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-state-2": {
                width: 36,
                height: 40,
                x: 944,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "au-state-3": {
                width: 46,
                height: 40,
                x: 0,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "au-state-4": {
                width: 58,
                height: 40,
                x: 46,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "au-state-5": {
                width: 68,
                height: 40,
                x: 104,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "au-state-6": {
                width: 78,
                height: 40,
                x: 172,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "br-state-2": {
                width: 40,
                height: 40,
                x: 250,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "br-state-3": {
                width: 56,
                height: 40,
                x: 290,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "circle-white-2": {
                width: 40,
                height: 40,
                x: 346,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "circle-white-3": {
                width: 52,
                height: 40,
                x: 386,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "circle-white-4": {
                width: 64,
                height: 40,
                x: 438,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "hu-main-2": {
                width: 40,
                height: 40,
                x: 502,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "hu-main-3": {
                width: 52,
                height: 40,
                x: 542,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "hu-main-4": {
                width: 64,
                height: 40,
                x: 594,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "hu-main-5": {
                width: 76,
                height: 40,
                x: 658,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "hu-motorway-2": {
                width: 40,
                height: 40,
                x: 734,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "hu-motorway-3": {
                width: 52,
                height: 40,
                x: 774,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "marker-15": {
                width: 24,
                height: 40,
                x: 826,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "nz-state-2": {
                width: 36,
                height: 40,
                x: 850,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "nz-state-3": {
                width: 46,
                height: 40,
                x: 886,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "ro-communal-2": {
                width: 40,
                height: 40,
                x: 932,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "ro-communal-3": {
                width: 52,
                height: 40,
                x: 972,
                y: 480,
                pixelRatio: 2,
                visible: !0
            },
            "ro-communal-4": {
                width: 64,
                height: 40,
                x: 0,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "ro-county-3": {
                width: 52,
                height: 40,
                x: 64,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "ro-county-4": {
                width: 64,
                height: 40,
                x: 116,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "ro-national-2": {
                width: 40,
                height: 40,
                x: 180,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "ro-national-3": {
                width: 52,
                height: 40,
                x: 220,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "tw-county-township-2": {
                width: 40,
                height: 40,
                x: 272,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "tw-county-township-3": {
                width: 52,
                height: 40,
                x: 312,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "tw-county-township-4": {
                width: 64,
                height: 40,
                x: 364,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "tw-county-township-5": {
                width: 76,
                height: 40,
                x: 428,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "tw-county-township-6": {
                width: 88,
                height: 40,
                x: 504,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-bia-2": {
                width: 40,
                height: 40,
                x: 592,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-bia-3": {
                width: 52,
                height: 40,
                x: 632,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-bia-4": {
                width: 60,
                height: 40,
                x: 684,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-2": {
                width: 40,
                height: 40,
                x: 744,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-3": {
                width: 52,
                height: 40,
                x: 784,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-4": {
                width: 64,
                height: 40,
                x: 836,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-alternate-2": {
                width: 40,
                height: 40,
                x: 900,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-alternate-3": {
                width: 52,
                height: 40,
                x: 940,
                y: 520,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-duplex-3": {
                width: 52,
                height: 40,
                x: 0,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-duplex-4": {
                width: 64,
                height: 40,
                x: 52,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "us-highway-duplex-5": {
                width: 76,
                height: 40,
                x: 116,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "za-national-2": {
                width: 40,
                height: 40,
                x: 192,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "za-national-3": {
                width: 56,
                height: 40,
                x: 232,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "barcelona-metro": {
                width: 38,
                height: 38,
                x: 288,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "boston-t": {
                width: 38,
                height: 38,
                x: 326,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "de-s-bahn": {
                width: 38,
                height: 38,
                x: 364,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "de-s-bahn.de-u-bahn": {
                width: 70,
                height: 38,
                x: 402,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "delhi-metro": {
                width: 38,
                height: 38,
                x: 472,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "kiev-metro": {
                width: 38,
                height: 38,
                x: 510,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metro-expy-2": {
                width: 40,
                height: 38,
                x: 548,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metro-expy-3": {
                width: 52,
                height: 38,
                x: 588,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metro-expy-4": {
                width: 64,
                height: 38,
                x: 640,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "madrid-metro": {
                width: 38,
                height: 38,
                x: 704,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "new-york-subway": {
                width: 38,
                height: 38,
                x: 742,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "oslo-metro": {
                width: 38,
                height: 38,
                x: 780,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "paris-metro": {
                width: 38,
                height: 38,
                x: 818,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "paris-metro.paris-rer": {
                width: 74,
                height: 38,
                x: 856,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "paris-rer": {
                width: 38,
                height: 38,
                x: 930,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "paris-rer.paris-transilien": {
                width: 70,
                height: 38,
                x: 0,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "road-closure": {
                width: 38,
                height: 38,
                x: 70,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "stockholm-metro": {
                width: 38,
                height: 38,
                x: 108,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "taipei-metro": {
                width: 38,
                height: 38,
                x: 146,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "vienna-u-bahn": {
                width: 38,
                height: 38,
                x: 184,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "kr-natl-hwy-2": {
                width: 44,
                height: 36,
                x: 222,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "airfield-11": {
                width: 34,
                height: 34,
                x: 266,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "airport-11": {
                width: 34,
                height: 34,
                x: 300,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "alcohol-shop-11": {
                width: 34,
                height: 34,
                x: 334,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "american-football-11": {
                width: 34,
                height: 34,
                x: 368,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "amusement-park-11": {
                width: 34,
                height: 34,
                x: 402,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "aquarium-11": {
                width: 34,
                height: 34,
                x: 436,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "art-gallery-11": {
                width: 34,
                height: 34,
                x: 470,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "attraction-11": {
                width: 34,
                height: 34,
                x: 504,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bakery-11": {
                width: 34,
                height: 34,
                x: 538,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bank-11": {
                width: 34,
                height: 34,
                x: 572,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bar-11": {
                width: 34,
                height: 34,
                x: 606,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "basketball-11": {
                width: 34,
                height: 34,
                x: 640,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "beach-11": {
                width: 34,
                height: 34,
                x: 674,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "beer-11": {
                width: 34,
                height: 34,
                x: 708,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bicycle-11": {
                width: 34,
                height: 34,
                x: 742,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bicycle-share": {
                width: 34,
                height: 34,
                x: 776,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bowling-alley-11": {
                width: 34,
                height: 34,
                x: 810,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "bridge-11": {
                width: 34,
                height: 34,
                x: 844,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            bus: {
                width: 34,
                height: 34,
                x: 878,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "cafe-11": {
                width: 34,
                height: 34,
                x: 912,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "campsite-11": {
                width: 34,
                height: 34,
                x: 946,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "car-11": {
                width: 34,
                height: 34,
                x: 980,
                y: 600,
                pixelRatio: 2,
                visible: !0
            },
            "car-rental-11": {
                width: 34,
                height: 34,
                x: 968,
                y: 560,
                pixelRatio: 2,
                visible: !0
            },
            "car-repair-11": {
                width: 34,
                height: 34,
                x: 980,
                y: 0,
                pixelRatio: 2,
                visible: !0
            },
            "casino-11": {
                width: 34,
                height: 34,
                x: 0,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "castle-11": {
                width: 34,
                height: 34,
                x: 34,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "cemetery-11": {
                width: 34,
                height: 34,
                x: 68,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "charging-station-11": {
                width: 34,
                height: 34,
                x: 102,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "chongqing-rail-transit": {
                width: 50,
                height: 34,
                x: 136,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "cinema-11": {
                width: 34,
                height: 34,
                x: 186,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "clothing-store-11": {
                width: 34,
                height: 34,
                x: 220,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "college-11": {
                width: 34,
                height: 34,
                x: 254,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "communications-tower-11": {
                width: 34,
                height: 34,
                x: 288,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "confectionery-11": {
                width: 34,
                height: 34,
                x: 322,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "convenience-11": {
                width: 34,
                height: 34,
                x: 356,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "de-u-bahn": {
                width: 34,
                height: 34,
                x: 390,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "dentist-11": {
                width: 34,
                height: 34,
                x: 424,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "doctor-11": {
                width: 34,
                height: 34,
                x: 458,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "dog-park-11": {
                width: 34,
                height: 34,
                x: 492,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "drinking-water-11": {
                width: 34,
                height: 34,
                x: 526,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "embassy-11": {
                width: 34,
                height: 34,
                x: 560,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            entrance: {
                width: 34,
                height: 34,
                x: 594,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "farm-11": {
                width: 34,
                height: 34,
                x: 628,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "fast-food-11": {
                width: 34,
                height: 34,
                x: 662,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            ferry: {
                width: 34,
                height: 34,
                x: 696,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "fire-station-11": {
                width: 34,
                height: 34,
                x: 730,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "fitness-centre-11": {
                width: 34,
                height: 34,
                x: 764,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "fuel-11": {
                width: 34,
                height: 34,
                x: 798,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "furniture-11": {
                width: 34,
                height: 34,
                x: 832,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "garden-11": {
                width: 34,
                height: 34,
                x: 866,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "globe-11": {
                width: 34,
                height: 34,
                x: 900,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "golf-11": {
                width: 34,
                height: 34,
                x: 934,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "grocery-11": {
                width: 34,
                height: 34,
                x: 968,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "harbor-11": {
                width: 34,
                height: 34,
                x: 0,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "hardware-11": {
                width: 34,
                height: 34,
                x: 34,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "heliport-11": {
                width: 34,
                height: 34,
                x: 68,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "hong-kong-mtr": {
                width: 38,
                height: 34,
                x: 102,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "horse-riding-11": {
                width: 34,
                height: 34,
                x: 140,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "hospital-11": {
                width: 34,
                height: 34,
                x: 174,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "ice-cream-11": {
                width: 34,
                height: 34,
                x: 208,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "information-11": {
                width: 34,
                height: 34,
                x: 242,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "jewelry-store-11": {
                width: 34,
                height: 34,
                x: 276,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "laundry-11": {
                width: 34,
                height: 34,
                x: 310,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "library-11": {
                width: 34,
                height: 34,
                x: 344,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "lodging-11": {
                width: 34,
                height: 34,
                x: 378,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "marker-11": {
                width: 24,
                height: 34,
                x: 412,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "mexico-city-metro": {
                width: 34,
                height: 34,
                x: 436,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "milan-metro": {
                width: 34,
                height: 34,
                x: 470,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "mobile-phone-11": {
                width: 34,
                height: 34,
                x: 504,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "monument-11": {
                width: 34,
                height: 34,
                x: 538,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "moscow-metro": {
                width: 34,
                height: 34,
                x: 572,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "mountain-11": {
                width: 34,
                height: 34,
                x: 606,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "museum-11": {
                width: 34,
                height: 34,
                x: 640,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "music-11": {
                width: 34,
                height: 34,
                x: 674,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "optician-11": {
                width: 34,
                height: 34,
                x: 708,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "osaka-subway": {
                width: 40,
                height: 34,
                x: 742,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "paris-transilien": {
                width: 34,
                height: 34,
                x: 782,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "park-11": {
                width: 34,
                height: 34,
                x: 816,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "parking-11": {
                width: 34,
                height: 34,
                x: 850,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "parking-garage-11": {
                width: 34,
                height: 34,
                x: 884,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "pharmacy-11": {
                width: 34,
                height: 34,
                x: 918,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "philadelphia-septa": {
                width: 38,
                height: 34,
                x: 952,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "picnic-site-11": {
                width: 34,
                height: 34,
                x: 990,
                y: 672,
                pixelRatio: 2,
                visible: !0
            },
            "pitch-11": {
                width: 34,
                height: 34,
                x: 0,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "place-of-worship-11": {
                width: 34,
                height: 34,
                x: 34,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "playground-11": {
                width: 34,
                height: 34,
                x: 68,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "police-11": {
                width: 34,
                height: 34,
                x: 102,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "post-11": {
                width: 34,
                height: 34,
                x: 136,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "prison-11": {
                width: 34,
                height: 34,
                x: 170,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            rail: {
                width: 34,
                height: 34,
                x: 204,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "rail-light": {
                width: 34,
                height: 34,
                x: 238,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "rail-metro": {
                width: 34,
                height: 34,
                x: 272,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "ranger-station-11": {
                width: 34,
                height: 34,
                x: 306,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "religious-buddhist-11": {
                width: 34,
                height: 34,
                x: 340,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "religious-christian-11": {
                width: 34,
                height: 34,
                x: 374,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "religious-jewish-11": {
                width: 34,
                height: 34,
                x: 408,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "religious-muslim-11": {
                width: 34,
                height: 34,
                x: 442,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-11": {
                width: 34,
                height: 34,
                x: 476,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-noodle-11": {
                width: 34,
                height: 34,
                x: 510,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-pizza-11": {
                width: 34,
                height: 34,
                x: 544,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "restaurant-seafood-11": {
                width: 34,
                height: 34,
                x: 578,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "rocket-11": {
                width: 34,
                height: 34,
                x: 612,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "san-francisco-bart": {
                width: 34,
                height: 34,
                x: 646,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "school-11": {
                width: 34,
                height: 34,
                x: 680,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "shoe-11": {
                width: 34,
                height: 34,
                x: 714,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "shop-11": {
                width: 34,
                height: 34,
                x: 748,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "singapore-mrt": {
                width: 34,
                height: 34,
                x: 782,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "skateboard-11": {
                width: 34,
                height: 34,
                x: 816,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "slipway-11": {
                width: 34,
                height: 34,
                x: 850,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "stadium-11": {
                width: 34,
                height: 34,
                x: 884,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "suitcase-11": {
                width: 34,
                height: 34,
                x: 918,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "swimming-11": {
                width: 34,
                height: 34,
                x: 952,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "table-tennis-11": {
                width: 34,
                height: 34,
                x: 986,
                y: 706,
                pixelRatio: 2,
                visible: !0
            },
            "tennis-11": {
                width: 34,
                height: 34,
                x: 0,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "theatre-11": {
                width: 34,
                height: 34,
                x: 34,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "toilet-11": {
                width: 34,
                height: 34,
                x: 68,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "tokyo-metro": {
                width: 34,
                height: 34,
                x: 102,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "town-hall-11": {
                width: 34,
                height: 34,
                x: 136,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "traffic-signal": {
                width: 16,
                height: 34,
                x: 1002,
                y: 638,
                pixelRatio: 2,
                visible: !0
            },
            "veterinary-11": {
                width: 34,
                height: 34,
                x: 170,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "viewpoint-11": {
                width: 34,
                height: 34,
                x: 204,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "volcano-11": {
                width: 34,
                height: 34,
                x: 238,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "volleyball-11": {
                width: 34,
                height: 34,
                x: 272,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "washington-metro": {
                width: 34,
                height: 34,
                x: 306,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "watch-11": {
                width: 34,
                height: 34,
                x: 340,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "waterfall-11": {
                width: 34,
                height: 34,
                x: 374,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "watermill-11": {
                width: 34,
                height: 34,
                x: 408,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "windmill-11": {
                width: 34,
                height: 34,
                x: 442,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "zoo-11": {
                width: 34,
                height: 34,
                x: 476,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "ch-motorway-2": {
                width: 44,
                height: 32,
                x: 510,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "ch-motorway-3": {
                width: 56,
                height: 32,
                x: 554,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "de-motorway-2": {
                width: 44,
                height: 32,
                x: 610,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "de-motorway-3": {
                width: 56,
                height: 32,
                x: 654,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-dlr": {
                width: 72,
                height: 32,
                x: 710,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-dlr.london-overground.london-tfl-rail.london-underground": {
                width: 186,
                height: 32,
                x: 782,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-dlr.london-overground.london-underground": {
                width: 148,
                height: 32,
                x: 0,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-dlr.london-underground": {
                width: 110,
                height: 32,
                x: 148,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-overground": {
                width: 72,
                height: 32,
                x: 258,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-overground.london-tfl-rail.london-underground": {
                width: 148,
                height: 32,
                x: 330,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-overground.london-underground": {
                width: 110,
                height: 32,
                x: 478,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-tfl-rail": {
                width: 72,
                height: 32,
                x: 588,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-tfl-rail.london-overground": {
                width: 110,
                height: 32,
                x: 660,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-tfl-rail.london-underground": {
                width: 110,
                height: 32,
                x: 770,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail.london-underground": {
                width: 72,
                height: 32,
                x: 880,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gr-motorway-2": {
                width: 44,
                height: 32,
                x: 952,
                y: 774,
                pixelRatio: 2,
                visible: !0
            },
            "gr-motorway-3": {
                width: 56,
                height: 32,
                x: 968,
                y: 740,
                pixelRatio: 2,
                visible: !0
            },
            "gr-motorway-4": {
                width: 68,
                height: 32,
                x: 0,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "hr-motorway-3": {
                width: 56,
                height: 32,
                x: 68,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "hr-motorway-4": {
                width: 68,
                height: 32,
                x: 124,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metropolitan-2": {
                width: 40,
                height: 32,
                x: 192,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metropolitan-3": {
                width: 52,
                height: 32,
                x: 232,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metropolitan-4": {
                width: 64,
                height: 32,
                x: 284,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metropolitan-5": {
                width: 76,
                height: 32,
                x: 348,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "kr-metropolitan-6": {
                width: 88,
                height: 32,
                x: 424,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-dlr": {
                width: 40,
                height: 32,
                x: 512,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-dlr.london-tfl-rail": {
                width: 78,
                height: 32,
                x: 552,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-dlr.london-tfl-rail.london-underground": {
                width: 116,
                height: 32,
                x: 630,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-dlr.london-underground": {
                width: 78,
                height: 32,
                x: 746,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-overground": {
                width: 40,
                height: 32,
                x: 824,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-overground.london-tfl-rail": {
                width: 78,
                height: 32,
                x: 864,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-overground.london-tfl-rail.london-underground": {
                width: 116,
                height: 32,
                x: 0,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "london-overground.london-underground": {
                width: 78,
                height: 32,
                x: 942,
                y: 806,
                pixelRatio: 2,
                visible: !0
            },
            "london-tfl-rail": {
                width: 40,
                height: 32,
                x: 116,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "london-tfl-rail.london-underground": {
                width: 78,
                height: 32,
                x: 156,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "london-underground": {
                width: 40,
                height: 32,
                x: 234,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "si-motorway-2": {
                width: 44,
                height: 32,
                x: 274,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            wetland: {
                width: 32,
                height: 32,
                x: 318,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "level-crossing": {
                width: 30,
                height: 30,
                x: 350,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "default-2": {
                width: 40,
                height: 28,
                x: 380,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "default-3": {
                width: 52,
                height: 28,
                x: 420,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "default-4": {
                width: 64,
                height: 28,
                x: 472,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "default-5": {
                width: 76,
                height: 28,
                x: 536,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "default-6": {
                width: 88,
                height: 28,
                x: 612,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "gb-national-rail": {
                width: 34,
                height: 28,
                x: 700,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-1": {
                width: 40,
                height: 28,
                x: 734,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-2": {
                width: 40,
                height: 28,
                x: 774,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-3": {
                width: 52,
                height: 28,
                x: 814,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-4": {
                width: 64,
                height: 28,
                x: 866,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-5": {
                width: 76,
                height: 28,
                x: 930,
                y: 838,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-6": {
                width: 88,
                height: 28,
                x: 0,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-7": {
                width: 100,
                height: 28,
                x: 88,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-8": {
                width: 112,
                height: 28,
                x: 188,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "motorway-exit-9": {
                width: 124,
                height: 28,
                x: 300,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-blue-2": {
                width: 40,
                height: 28,
                x: 424,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-blue-3": {
                width: 52,
                height: 28,
                x: 464,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-blue-4": {
                width: 64,
                height: 28,
                x: 516,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-green-2": {
                width: 40,
                height: 28,
                x: 580,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-green-3": {
                width: 52,
                height: 28,
                x: 620,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-green-4": {
                width: 64,
                height: 28,
                x: 672,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-green-5": {
                width: 76,
                height: 28,
                x: 736,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-green-6": {
                width: 88,
                height: 28,
                x: 812,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-red-2": {
                width: 40,
                height: 28,
                x: 900,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-red-3": {
                width: 52,
                height: 28,
                x: 940,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-red-4": {
                width: 64,
                height: 28,
                x: 0,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-white-2": {
                width: 40,
                height: 28,
                x: 64,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-white-3": {
                width: 52,
                height: 28,
                x: 104,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-white-4": {
                width: 64,
                height: 28,
                x: 156,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-white-5": {
                width: 76,
                height: 28,
                x: 220,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-white-6": {
                width: 88,
                height: 28,
                x: 296,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-yellow-2": {
                width: 40,
                height: 28,
                x: 384,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-yellow-3": {
                width: 52,
                height: 28,
                x: 424,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-yellow-4": {
                width: 64,
                height: 28,
                x: 476,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-yellow-5": {
                width: 76,
                height: 28,
                x: 540,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "rectangle-yellow-6": {
                width: 88,
                height: 28,
                x: 616,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "border-dot-13": {
                width: 26,
                height: 26,
                x: 992,
                y: 870,
                pixelRatio: 2,
                visible: !0
            },
            "dot-10": {
                width: 22,
                height: 22,
                x: 704,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "dot-11": {
                width: 22,
                height: 22,
                x: 726,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "dot-9": {
                width: 22,
                height: 22,
                x: 748,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            cliff: {
                width: 16,
                height: 14,
                x: 770,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "oneway-large": {
                width: 28,
                height: 12,
                x: 786,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "oneway-white-large": {
                width: 28,
                height: 12,
                x: 814,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "oneway-small": {
                width: 22,
                height: 10,
                x: 842,
                y: 898,
                pixelRatio: 2,
                visible: !0
            },
            "oneway-white-small": {
                width: 22,
                height: 10,
                x: 864,
                y: 898,
                pixelRatio: 2,
                visible: !0
            }
        },
        VU: {
            "Latin-1 Supplement": function(A) {
                return 128 <= A && A <= 255
            },
            Arabic: function(A) {
                return 1536 <= A && A <= 1791
            },
            "Arabic Supplement": function(A) {
                return 1872 <= A && A <= 1919
            },
            "Arabic Extended-A": function(A) {
                return 2208 <= A && A <= 2303
            },
            "Hangul Jamo": function(A) {
                return 4352 <= A && A <= 4607
            },
            "Unified Canadian Aboriginal Syllabics": function(A) {
                return 5120 <= A && A <= 5759
            },
            Khmer: function(A) {
                return 6016 <= A && A <= 6143
            },
            "Unified Canadian Aboriginal Syllabics Extended": function(A) {
                return 6320 <= A && A <= 6399
            },
            "General Punctuation": function(A) {
                return 8192 <= A && A <= 8303
            },
            "Letterlike Symbols": function(A) {
                return 8448 <= A && A <= 8527
            },
            "Number Forms": function(A) {
                return 8528 <= A && A <= 8591
            },
            "Miscellaneous Technical": function(A) {
                return 8960 <= A && A <= 9215
            },
            "Control Pictures": function(A) {
                return 9216 <= A && A <= 9279
            },
            "Optical Character Recognition": function(A) {
                return 9280 <= A && A <= 9311
            },
            "Enclosed Alphanumerics": function(A) {
                return 9312 <= A && A <= 9471
            },
            "Geometric Shapes": function(A) {
                return 9632 <= A && A <= 9727
            },
            "Miscellaneous Symbols": function(A) {
                return 9728 <= A && A <= 9983
            },
            "Miscellaneous Symbols and Arrows": function(A) {
                return 11008 <= A && A <= 11263
            },
            "CJK Radicals Supplement": function(A) {
                return 11904 <= A && A <= 12031
            },
            "Kangxi Radicals": function(A) {
                return 12032 <= A && A <= 12255
            },
            "Ideographic Description Characters": function(A) {
                return 12272 <= A && A <= 12287
            },
            "CJK Symbols and Punctuation": function(A) {
                return 12288 <= A && A <= 12351
            },
            Hiragana: function(A) {
                return 12352 <= A && A <= 12447
            },
            Katakana: function(A) {
                return 12448 <= A && A <= 12543
            },
            Bopomofo: function(A) {
                return 12544 <= A && A <= 12591
            },
            "Hangul Compatibility Jamo": function(A) {
                return 12592 <= A && A <= 12687
            },
            Kanbun: function(A) {
                return 12688 <= A && A <= 12703
            },
            "Bopomofo Extended": function(A) {
                return 12704 <= A && A <= 12735
            },
            "CJK Strokes": function(A) {
                return 12736 <= A && A <= 12783
            },
            "Katakana Phonetic Extensions": function(A) {
                return 12784 <= A && A <= 12799
            },
            "Enclosed CJK Letters and Months": function(A) {
                return 12800 <= A && A <= 13055
            },
            "CJK Compatibility": function(A) {
                return 13056 <= A && A <= 13311
            },
            "CJK Unified Ideographs Extension A": function(A) {
                return 13312 <= A && A <= 19903
            },
            "Yijing Hexagram Symbols": function(A) {
                return 19904 <= A && A <= 19967
            },
            "CJK Unified Ideographs": function(A) {
                return 19968 <= A && A <= 40959
            },
            "Yi Syllables": function(A) {
                return 40960 <= A && A <= 42127
            },
            "Yi Radicals": function(A) {
                return 42128 <= A && A <= 42191
            },
            "Hangul Jamo Extended-A": function(A) {
                return 43360 <= A && A <= 43391
            },
            "Hangul Syllables": function(A) {
                return 44032 <= A && A <= 55215
            },
            "Hangul Jamo Extended-B": function(A) {
                return 55216 <= A && A <= 55295
            },
            "Private Use Area": function(A) {
                return 57344 <= A && A <= 63743
            },
            "CJK Compatibility Ideographs": function(A) {
                return 63744 <= A && A <= 64255
            },
            "Arabic Presentation Forms-A": function(A) {
                return 64336 <= A && A <= 65023
            },
            "Vertical Forms": function(A) {
                return 65040 <= A && A <= 65055
            },
            "CJK Compatibility Forms": function(A) {
                return 65072 <= A && A <= 65103
            },
            "Small Form Variants": function(A) {
                return 65104 <= A && A <= 65135
            },
            "Arabic Presentation Forms-B": function(A) {
                return 65136 <= A && A <= 65279
            },
            "Halfwidth and Fullwidth Forms": function(A) {
                return 65280 <= A && A <= 65519
            }
        },
        layers: [],
        styles: {},
        Mr: !0,
        Rr: function(A, i) {
            var C, Q = this;
            if (!A)
                return !1;
            C = A,
            this.styles.zr = [];
            for (var e = this, g = 0, I = C.length; g < I; g += 1)
                !function(A) {
                    var I, t, g, B = C[A], i = (B.zIndex = A,
                    "line" === B.type && (B.paint["line-width"] = void 0 === B.paint["line-width"] ? 1 : B.paint["line-width"]),
                    B.paint["line-width"] && (A = B.paint["line-width"],
                    i = 0,
                    B.paint["line-gap-width"] && (i = B.paint["line-gap-width"]),
                    I = A,
                    t = i,
                    e.styles.zr.push(A = function(A, i) {
                        var g = 0;
                        return t && (g = Q.HU(i, t, A)),
                        i = Q.HU(i, I, A),
                        g ? 2 * i + g : i
                    }
                    ),
                    B.paint["line-width"] = A,
                    B.paint["line-width"].Cr = e.styles.zr.length - 1,
                    delete B.paint["line-gap-width"]),
                    B["source-layer"]);
                    i ? (e.styles[i] || (e.styles[i] = []),
                    (A = B.filter) && (B.filters = [],
                    (g = function(A) {
                        if ("all" !== A[0])
                            "in" === A[0] || "!in" === A[0] ? B.filters.push([A[0], A[1], A.slice(2)]) : B.filters.push(A);
                        else
                            for (var i = 1; i < A.length; i += 1)
                                g(A[i])
                    }
                    )(A)),
                    e.styles[i].push(B)) : e.styles[B.id] = B
                }(g);
            this.backgroundColor = this.HU({}, this.styles.land.paint["background-color"], 12)
        },
        Ar: function(A, i, g, I) {
            return A -= g,
            0 == (I -= g) ? 0 : 1 === i ? A / I : (Math.pow(i, A) - 1) / (Math.pow(i, I) - 1)
        },
        Sr: function(A, i, g) {
            var I = i.base || 1
              , t = i.stops;
            if (g <= t[0][0])
                return this.HU(A, t[0][1], g);
            if (g >= t[t.length - 1][0])
                return this.HU(A, t[t.length - 1][1], g);
            for (var B = 1, Q = t.length; B < Q; B += 1)
                if (g > t[B - 1][0] && g <= t[B][0]) {
                    var C = this.HU(A, t[B - 1][1], g)
                      , e = this.HU(A, t[B][1], g);
                    if (C instanceof Array) {
                        for (var o = new Array(C.length), E = 0; E < C.length; E += 1) {
                            var h = e[E] - C[E];
                            o[E] = C[E] + this.Ar(g, I, t[B - 1][0]) * h
                        }
                        return o
                    }
                    return "number" == typeof C ? (h = e - C,
                    C + this.Ar(g, I, t[B - 1][0], t[B][0]) * h) : C
                }
        },
        Lr: function(A, i) {
            if (A) {
                var g = void 0;
                if ("string" == typeof A)
                    g = A;
                else if (A.stops)
                    for (var I = 0, t = A.stops.length; I < t; I += 1) {
                        if (A.stops[I][0] > i) {
                            g = A.stops[I][1];
                            break
                        }
                        g = A.stops[t - 1][1]
                    }
                else if ("interpolate" === A[0]) {
                    for (var B = A.slice(3), Q = [], C = 0; C < B.length; C += 2)
                        Q.push([B[C], B[C + 1]]);
                    for (I = 0,
                    t = Q.length; I < t; I += 1) {
                        if (Q[I][0] > i) {
                            g = Q[I][1];
                            break
                        }
                        g = Q[t - 1][1]
                    }
                }
                return g
            }
        },
        Tr: function(A, i) {
            if (A) {
                var g = void 0;
                if (A.stops)
                    for (var I = 0, t = A.stops.length; I < t; I += 1) {
                        if (A.stops[I][0] > i) {
                            g = A.stops[I][1];
                            break
                        }
                        g = A.stops[t - 1][1]
                    }
                else
                    g = A;
                return g
            }
        },
        Ir: function(A, i) {
            var g;
            if (void 0 === A)
                return 0;
            if ("function" == typeof A)
                return A(i);
            if ("number" != typeof A) {
                if (A.stops)
                    g = this.Sr(A.base || 1, A.stops, i);
                else if ("interpolate" === A[0]) {
                    for (var I = A.slice(3), t = [], B = 0; B < I.length; B += 2)
                        t.push([I[B], I[B + 1]]);
                    g = this.Sr(1, t, i)
                }
            } else
                g = A;
            return g
        },
        Dr: function(A, i, g, I) {
            var t;
            if (void 0 === i)
                return i;
            i instanceof Array ? t = i : i.stops && (t = this.Sr(A, i, g));
            var B = new Array(t.length);
            return t.forEach(function(A, i) {
                B[i] = A * I
            }),
            B
        },
        Pr: function(A, i, g) {
            for (var I, t, B, Q, C, e, o, E, h, a, l, n, s, r = "butt", w = "butt", c = "solid", y = "solid", x = 0, d = 0, p = 0; p < A.length; p += 1)
                "line" !== A[p].type || void 0 !== (t = A[p]).minzoom && t.minzoom > i || void 0 !== t.maxzoom && t.maxzoom < i || (I = t.paint,
                t = t.layout,
                void 0 === (B = I["line-opacity"]) && (B = 1),
                (B = this.HU(g, B, i)) && (this.WU(A[p].id, "-low") ? (Q = B,
                A[p].id,
                s = I["line-color"],
                C = this.HU(g, s, i),
                r = this.HU(g, t["line-cap"] || r, i),
                e = this.HU(g, I["line-width"], i),
                o = I["line-width"].Cr,
                this.Dr(g, I["line-dasharray"], i, e) && (c = "dashed"),
                d = Math.max(d, A[p].zIndex)) : this.WU(A[p].id, "-case") || this.WU(A[p].id, "-tracks") ? (E = !0,
                A[p].id,
                h = B,
                s = I["line-color"],
                a = this.HU(g, s, i),
                l = this.HU(g, I["line-width"], i),
                n = I["line-width"].Cr,
                w = this.HU(g, t["line-cap"] || w, i),
                this.Dr(g, I["line-dasharray"], i, l) && (y = "dashed"),
                x = Math.max(x, A[p].zIndex)) : this.WU(A[p].id, "-bg") ? (E = !0,
                A[p].id,
                h = B,
                s = I["line-color"],
                a = this.HU(g, s, i),
                w = this.HU(g, t["line-cap"] || w, i),
                l = this.HU(g, I["line-width"], i),
                n = I["line-width"].Cr,
                this.Dr(g, I["line-dasharray"], i, l) && (y = "dashed"),
                x = Math.max(x, A[p].zIndex)) : (Q = B,
                A[p].id,
                s = I["line-color"],
                C = this.HU(g, s, i),
                r = this.HU(g, t["line-cap"] || r, i),
                e = this.HU(g, I["line-width"], i),
                o = I["line-width"].Cr,
                this.Dr(g, I["line-dasharray"], i, e) && (c = "dashed"),
                d = Math.max(d, A[p].zIndex))));
            if (e)
                return {
                    facezIndex: d,
                    borderzIndex: x,
                    faceStrokeStyle: c,
                    faceOpacity: Q,
                    faceDashArray: void 0,
                    faceWidth: e,
                    faceColor: C,
                    faceLineCap: r,
                    borderLineCap: w,
                    isOutline: E,
                    borderOpacity: h,
                    borderStrokeStyle: y,
                    borderDashArray: void 0,
                    borderColor: a,
                    borderWidth: l,
                    faceWidthFunIndex: o,
                    borderWidthFunIndex: n
                }
        },
        QU: function(A) {
            return A instanceof Array && -1 < this.KU(["geometry-type", "to-number", "case", "step", "is-supported-script", "concat", "get", "literal", "match", "interpolate", "to-string", "string", "coalesce", "has", "+", "==", "!=", ">", "<", ">=", "<=", "in", "!in"], A[0]) || "object" == typeof A && A.stops
        },
        KU: function(A, i) {
            if (A && A.length) {
                if (A.indexOf)
                    return A.indexOf(i);
                for (var g = 0; g < A.length; g += 1)
                    if (A[g] === i)
                        return g
            }
            return -1
        },
        WU: function(A, i) {
            return A.endsWith ? A.endsWith(i) : !(A.length < i.length) && A.substr(A.length - i.length) === i
        },
        Vr: function(A, i, g) {
            for (var I = 0, t = 0; t < A.length; t += 1) {
                var B, Q, C, e, o, E, h = A[t];
                "line" === A[t].type ? h.minzoom && h.minzoom > i || (I = Math.max(I, h.zIndex),
                o = (e = h.paint)["line-color"],
                B = this.HU(g, o, i),
                Q = this.HU(g, e["line-width"], i),
                o = void 0 === e["line-opacity"] ? 1 : e["line-opacity"],
                C = this.HU(g, o, i)) : "fill" !== A[t].type || h.minzoom && h.minzoom > i || (I = Math.max(I, h.zIndex),
                o = (e = h.paint)["fill-color"],
                E = this.HU(g, o, i))
            }
            return {
                zIndex: I,
                fillColor: E,
                fillOpacity: 1,
                strokeWeight: Q,
                strokeColor: B,
                strokeOpacity: C
            }
        },
        Xr: function(A, i, g) {
            var I, t, B, Q, C, e, o, E, h, a, l, n, s = (A = A[0]).paint, r = A.layout;
            if ("symbol" === A.type)
                return I = this.HU(g, s["text-color"], i),
                t = this.HU(g, s["text-halo-color"], i),
                e = this.HU(g, s["text-halo-width"], i),
                B = void 0 === s["icon-opacity"] ? 1 : s["icon-opacity"],
                B = this.HU(g, B, i),
                s = void 0 === s["text-opacity"] ? 1 : s["text-opacity"],
                s = this.HU(g, s, i),
                Q = C = void 0,
                0 === e && (t = ""),
                r["icon-image"] && (C = this.HU(g, r["icon-image"], i),
                e = this.kr[C]) && B && (e.height,
                Q = [-e.width / 2, -e.height / 2, e.width, e.height, e.x, e.y, e.width, e.height]),
                e = this.HU(g, r["icon-rotation-alignment"], i),
                o = r["text-max-width"],
                E = this.HU(g, r["text-anchor"] || "center", i),
                (h = this.HU(g, r["text-font"], i) || "Microsoft YaHei")instanceof Array && (h = h.join(" ")),
                a = r["text-offset"] ? this.HU(g, r["text-offset"], i) : [0, 0],
                l = this.HU(g, r["text-size"], i),
                n = "",
                s && r["text-field"] && (n = this.HU(g, r["text-field"] || "{name}", i)),
                {
                    zIndex: A.zIndex,
                    Jr: e,
                    Kr: I || "black",
                    Qr: t,
                    th: (A.minzoom || 1) + .5,
                    ih: (A.maxzoom || 20) + .5,
                    eh: B,
                    nh: C,
                    qU: Q,
                    oh: o,
                    textAnchor: E,
                    ah: h,
                    sh: a,
                    rh: l,
                    name: n
                }
        },
        lh: function(A, i, g) {
            var I = []
              , t = this.Pr(A, i, g);
            return t && (t.type = "line",
            I.push(t)),
            (t = this.uh(A, i, g)).length && I.push.apply(I, t),
            I
        },
        uh: function(A, i, g) {
            for (var I = [], t = 0; t < A.length; t += 1) {
                var B = this.Xr([A[t]], i, g);
                B && I.push(B)
            }
            return I
        },
        YU: function(A, i, g) {
            for (var I = 1, t = i.length - 1; I < t; I += 2)
                if (this.HU(A, i[I], g))
                    return this.HU(A, i[I + 1], g);
            return this.HU(A, i[i.length - 1], g)
        },
        JU: function(A, i, g) {
            var I = this.HU(A, i[1], g)
              , t = this.HU(A, i[2], g);
            return [I, this.HU(A, i[3], g)].join(t)
        },
        ZU: function(A, i, g) {
            for (var I = i[1], t = 1, B = ("exponential" === I[0] ? t = I[1] : "linear" === I[0] && (t = 1),
            i.slice(3)), Q = [], C = 0; C < B.length; C += 2)
                Q.push([B[C], B[C + 1]]);
            return I = this.Sr(A, {
                base: t,
                stops: Q
            }, g),
            this.HU(A, I, g)
        },
        XU: function(A, i, g) {
            "zoom" !== i[1][0] && "get" === i[1][0] && (g = A.properties[i[1][1]]);
            for (var I = [], t = 2, B = i.length; t < B; t += 2)
                I.push([parseFloat(i[t - 1]) || 0, this.HU(A, i[t], g)]);
            if (g < I[0][0])
                return this.HU(A, I[0][1], g);
            if (g >= I[I.length - 1][0])
                return this.HU(A, I[I.length - 1][1], g);
            for (t = 1,
            B = I.length; t < B; t += 1)
                if (g <= I[t][0])
                    return this.HU(A, I[t - 1][1], g)
        },
        tV: function(A, i, g) {
            var I = this.HU(A, i[1], g);
            if (I) {
                for (var t = 2, B = i.length - 1; t < B; t += 2)
                    if (i[t]instanceof Array ? -1 !== this.KU(i[t], I) : i[t] === I)
                        return this.HU(A, i[t + 1], g);
                return this.HU(A, i[i.length - 1], g)
            }
        },
        HU: function(A, i, g) {
            if (null == i)
                return null;
            var I = typeof i;
            if ("number" == I || "boolean" == I)
                return i;
            if ("function" == I)
                return i(g, A);
            if (!this.QU(i)) {
                if ("string" == typeof i && -1 !== this.KU(i, "{")) {
                    for (var t, B = [], Q = 0, C = 0, e = i.length; C < e; C += 1)
                        "{" === i[C] && (Q = C),
                        "}" === i[C] && (t = C,
                        B.push(i.substring(Q, t + 1)));
                    for (var o, C = 0, e = B.length; C < e; C += 1) {
                        if (void 0 === (o = A.properties[B[C].substring(1, B[C].length - 1)]))
                            return "";
                        i = i.replace(B[C], o)
                    }
                }
                return i
            }
            if ("literal" === i[0])
                return i[1];
            if (i.stops)
                return this.Sr(A, i, g);
            if ("get" === i[0])
                return this.Hr && "name" === i[1].substr(0, 4) && (A.properties["name_zh-Hant"] || A.properties["name_zh-Hans"]) || A.properties[i[1]];
            if ("to-number" === i[0])
                return parseFloat(this.HU(A, i[1], g));
            if ("to-string" === i[0])
                return (o = this.HU(A, i[1], g)) ? o + "" : "";
            if ("string" === i[0])
                return (o = this.HU(A, i[1], g)) ? o + "" : "";
            if ("match" === i[0])
                return this.tV(A, i, g);
            if ("case" === i[0])
                return this.YU(A, i, g);
            if ("interpolate" === i[0])
                return this.ZU(A, i, g);
            if ("concat" === i[0])
                return this.JU(A, i, g);
            if ("step" === i[0])
                return this.XU(A, i, g);
            if ("coalesce" !== i[0])
                return "+" === i[0] ? this.HU(A, i[1], g) + this.HU(A, i[2], g) : "has" === i[0] ? void 0 !== A.properties[i[1]] : "is-supported-script" === i[0] ? this.iV(this.HU(A, i[1], g)) : "==" === i[0] ? this.HU(A, i[1], g) === this.HU(A, i[2], g) : "!=" === i[0] ? this.HU(A, i[1], g) !== this.HU(A, i[2], g) : ">" === i[0] ? this.HU(A, i[1], g) > this.HU(A, i[2], g) : "<" === i[0] ? this.HU(A, i[1], g) < this.HU(A, i[2], g) : ">=" === i[0] ? this.HU(A, i[1], g) >= this.HU(A, i[2], g) : "<=" === i[0] ? this.HU(A, i[1], g) <= this.HU(A, i[2], g) : "in" === i[0] ? -1 < this.KU(this.HU(A, i[2], g), this.HU(A, i[1], g)) : "!in" === i[0] ? -1 === this.KU(this.HU(A, i[2], g), this.HU(A, i[1], g)) : "geometry-type" === i[0] ? 3 === A.type ? "Polygon" : 2 === A.type ? "LineString" : "Point" : void 0;
            for (C = 1; C < i.length; C += 1) {
                var E = this.HU(A, i[C], g);
                if (E)
                    return E
            }
        },
        eV: function(A, i) {
            return !(!i && (1424 <= A && A <= 2303 || this.VU["Arabic Presentation Forms-A"](A) || this.VU["Arabic Presentation Forms-B"](A)) || 2304 <= A && A <= 3583 || 3840 <= A && A <= 4255 || this.VU.Khmer(A))
        },
        iV: function(A) {
            if (!A)
                return !1;
            for (var i = 0, g = A.length; i < g; i += 1) {
                var I = A[i];
                if (!this.eV(I.charCodeAt(0), !1))
                    return !1
            }
            return !0
        },
        getStyle: function(C, e, A, o) {
            var i, g = C.type, E = (C.properties.class,
            C.properties.type,
            this), h = this.styles[e];
            if (h && (i = function() {
                for (var A = [], i = 0, g = h.length; i < g; i += 1) {
                    var I = h[i];
                    if (I.filters) {
                        for (var t = !0, B = 0; B < I.filters.length; B += 1) {
                            var Q = I.filters[B];
                            if (!E.HU(C, Q, o)) {
                                t = !1;
                                break
                            }
                        }
                        t && A.push(I)
                    } else
                        I.id === e && A.push(I)
                }
                return A
            }()).length)
                return 1 === g ? this.Xr(i, o, C) : 2 === g ? this.lh(i, o, C) : 3 === g ? this.Vr(i, o, C) : void 0
        },
        fh: function(A, i) {
            for (var g = 1 << 20 - i.z, I = A.extent / 256, t = 0; t < A.style.length; t += 1) {
                var B = A.style[t];
                if ("line" !== B.type) {
                    for (var Q = "", C = (B.hh && (Q = A.properties[B.hh]),
                    this.Mr), e = C ? 1.8 * B.rh : B.rh, o = A.lines[0], E = 1; E < A.lines.length; E += 1)
                        o.length < A.lines[E].length && (o = A.lines[E]);
                    for (var h = [], a = 0; a < o.length; a += 1) {
                        var l = [i.x * g * 256 + o[a][0] / I * g, 256 * i.y * g + o[a][1] / I * g];
                        h.push(l)
                    }
                    var n = B.textAnchor
                      , s = (this._r.font = B.rh + "px " + B.ah,
                    this._r.measureText(Q).width)
                      , r = 0
                      , w = 0
                      , c = B.nh && "viewport" === B.Jr;
                    if (B.nh) {
                        var r = (-A.properties.dh || 0) - 100
                          , x = (y = polyfill.kS._S(h, polyfill.kS.distanceOfLine(h) / 2) || [])[2];
                        "viewport" !== B.Jr && 1 < h.length && (w = 360 - (new polyfill.Pixel(h[x + 1][0] - h[x][0],h[x + 1][1] - h[x][1]).direction() || 0)),
                        h = [y[0], y[1]]
                    } else {
                        if (this.vh(o))
                            continue;
                        if (90 < (x = new polyfill.Pixel(o[1][0] - o[0][0],o[1][1] - o[0][1]).direction() || 0) && x < 270 && (h.reverse(),
                        o.reverse()),
                        r = -A.properties.dh - 1e6,
                        polyfill.kS.distanceOfLine(h) / g < 1.5 * s)
                            continue
                    }
                    var d, y = {
                        margin: this.mh,
                        foreign: !0,
                        zIndex: B.zIndex,
                        yh: w,
                        rank: r,
                        font: B.ah,
                        Kr: B.Kr,
                        Qr: B.Qr,
                        rh: e,
                        id: A.id,
                        xh: h,
                        name: Q,
                        textAlign: "center",
                        textBaseline: "center" === n ? "middle" : "top",
                        bh: [],
                        gh: new Array,
                        wh: c,
                        _h: !c,
                        kh: !B.nh,
                        th: B.th,
                        Mh: !0,
                        Rh: new Array,
                        zh: !1,
                        zoom: i.z
                    };
                    B.nh ? (w = 0,
                    r = B.nh.replace("{maki}", A.properties.maki).replace("{shield}", A.properties.shield).replace("{reflen}", A.properties.reflen).replace("{network}", A.properties.network),
                    (c = this.kr[r]) && B.eh && (w = c.height,
                    d = [-c.width / 2, -c.height / 2, c.width, c.height, c.x, c.y, c.width, c.height],
                    y.gh.push(d)),
                    Q && (r = void 0,
                    c = "center" === n ? (r = 0,
                    -e / 2) : r = t * (e + 2) + w / 2,
                    y.Rh.push([Q, B.ah, e, B.Kr, B.Qr, 0, 0, !1, [0, r, C ? 1.8 * s : s, e]]),
                    y.gh.push(d = [-s / 2, c, s, e])),
                    (w || Q) && (Q ? y.id = "mapbox_guideboard_" + polyfill.Util.stamp(y) : (y.id = "mapbox_singleway_" + polyfill.Util.stamp(y),
                    y.zh = !0),
                    i.labels.push(y))) : Q && (y.id = "mapbox_roadname_" + polyfill.Util.stamp(y),
                    i.labels.push(y))
                }
            }
        },
        Sh: function(A, i) {
            var g = 1 << 20 - i.z
              , I = A.extent / 256
              , t = A.Ch.xh[0][0]
              , B = A.properties[A.style.hh];
            if (B) {
                var Q = this.Mr ? 2 * A.style.rh : A.style.rh
                  , g = [i.x * g * 256 + t[0] / I * g, 256 * i.y * g + t[1] / I * g]
                  , C = A.style.textAnchor
                  , e = {
                    foreign: !0,
                    margin: this.mh,
                    zIndex: A.style.zIndex,
                    rank: -A.properties.dh || 0,
                    id: A.id,
                    xh: g,
                    name: B,
                    textAlign: "center",
                    textBaseline: "center" === C ? "middle" : "top",
                    bh: [],
                    gh: new Array,
                    yh: 0,
                    pos: [t[0] / I, t[1] / I],
                    wh: !0,
                    th: A.style.th,
                    Mh: !0,
                    Rh: new Array
                }
                  , o = 0
                  , E = (A.style.nh && (g = A.style.nh.replace("{maki}", A.properties.maki).replace("{shield}", A.properties.shield).replace("{reflen}", A.properties.reflen).replace("{network}", A.properties.network),
                t = this.kr[g]) && A.style.eh && (o = t.height,
                s = [-t.width / 2, -t.height / 2, t.width, t.height, t.x, t.y, t.width, t.height],
                e.gh = [s]),
                0 < (I = B.indexOf("(")) ? [B.substr(0, I), B.substr(I)] : 20 < B.length && 1 < (g = B.split(" ")).length ? (t = Math.floor(g.length / 2),
                [g.slice(0, t).join(" "), g.slice(t).join(" ")]) : [B]);
                this._r.font = Q + "px " + A.style.ah;
                for (var h = 0; h < E.length; h += 1) {
                    var a = E[h]
                      , l = this._r.measureText(a).width
                      , s = (e.Rh.push([a, A.style.ah, Q, A.style.Kr, A.style.Qr, 0, 0, !1, [0, a = "center" === C ? (-.5 * E.length + h) * (Q + 2) : h * (Q + 2) + o / 2, l, Q]]),
                    [-l / 2, a, l, Q]);
                    e.gh.push(s)
                }
                return i.labels.push(e),
                e
            }
        },
        Lh: function(A) {
            var i, g = [], I = [];
            for (i in A.layers)
                if (A.layers.hasOwnProperty(i)) {
                    for (var t = A.layers[i], B = [], Q = 0; Q < t.Ah.length; Q += 1)
                        3 == +(C = t.Ah[Q]).type ? g.push(C) : 2 == +C.type && B.push(C);
                    for (Q = 0; Q < B.length; Q += 1) {
                        var C, e = (C = B[Q]).style;
                        e.isOutline && I.push([C, {
                            zIndex: e.borderzIndex,
                            Th: e.borderWidthFunIndex,
                            strokeStyle: e.borderStrokeStyle,
                            strokeOpacity: e.borderOpacity,
                            strokeDasharray: e.borderDashArray,
                            lineCap: e.borderLineCap,
                            strokeWeight: e.borderWidth,
                            strokeColor: e.borderColor
                        }]),
                        I.push([C, {
                            zIndex: e.facezIndex,
                            Th: e.faceWidthFunIndex,
                            strokeStyle: e.faceStrokeStyle,
                            strokeOpacity: e.faceOpacity,
                            strokeDasharray: e.faceDashArray,
                            lineCap: e.faceLineCap,
                            strokeWeight: e.faceWidth,
                            strokeColor: e.faceColor
                        }])
                    }
                }
            I.sort(function(A, i) {
                return A[1].zIndex > i[1].zIndex ? 1 : -1
            }),
            A.polygons = g,
            A.Dh = I,
            delete A.layers
        },
        Ph: function(A) {
            A.type,
            A.lines
        },
        jh: function(A, i, g, I) {
            this.mh = 3;
            var t, B = i.vt, Q = (B.labels = [],
            []);
            for (t in B.layers)
                if (B.layers.hasOwnProperty(t)) {
                    var C = B.layers[t]
                      , e = C.Ah;
                    Q.push(t);
                    for (var o = 0, E = e.length; o < E; o++) {
                        var h = e[o];
                        h.Fh = C.name,
                        h.style = this.getStyle(h, C.name, !0, B.z - 1),
                        h.style,
                        this.Ph(h),
                        h.style && 1 != +h.type && 2 == +h.type && h.style.length && (this.fh(h, B),
                        "line" === h.style[0].type) && (h.style = h.style[0])
                    }
                }
            this.Lh(B),
            this.Eh || (this.Eh = !0),
            g.features = B.labels,
            B.labels = null,
            Q.length > this.layers.length && (this.layers = Q),
            I(null, {
                vt: B
            })
        }
    }, MapboxStyle = function() {
        function A(A) {
            var i = null
              , g = "";
            A && ((A = A.KG) && A.styles && (i = JSON.parse(A.styles).layers),
            A) && A.vectorMapForeign && (g = A.vectorMapForeign),
            mbStyle.Rr(i, g)
        }
        return A.prototype.getMapboxStyle = function() {
            return mbStyle
        }
        ,
        A
    }(), MapboxSourceWorker = function() {
        function A(A) {
            this.parent = A,
            this.id = "mapbox",
            this.sQ = {},
            this.yQ = {},
            this.kQ = {}
        }
        return A.prototype.YE = function(A) {
            var i = polyfill.Util.getOptimalZoom(this.WW);
            A(this.sQ, {
                ZL: this.WW,
                optimalZoom: i,
                cb: function() {}
            }),
            this.sQ = {}
        }
        ,
        A.prototype.bw = function(A, t, B, Q, i, g, C) {
            var e = this
              , o = new XMLHttpRequest;
            return o.onreadystatechange = function() {
                var A, i, g, I;
                4 === o.readyState && 200 === o.status && (I = new polyfill.pw(new Uint8Array(o.response)),
                (I = new polyfill.tW(I)).nG("mapbox"),
                A = t.z,
                i = t.x,
                g = t.y,
                I.data = {},
                I = e.Ow(I, {
                    x: t.x,
                    y: t.y,
                    z: t.z,
                    projectionId: B,
                    tileSize: Q
                }),
                e.wQ(I),
                I.zo = new polyfill.ca(A,i,g),
                e.FQ(I),
                delete I.road,
                C(null, polyfill.Ln({
                    zo: t
                }, I)))
            }
            ,
            o.open("GET", A, !0),
            o.responseType = "arraybuffer",
            o.send(),
            {
                cancel: function() {
                    o.abort()
                }
            }
        }
        ,
        A.prototype.wQ = function(A) {
            A.stencil = {};
            var i = new polyfill.fQ
              , A = (A.stencil.Oc = i,
            A.stencil.Dc = new polyfill.K_,
            A.stencil.Dc.Nx(A.MQ));
            i.add({}, A)
        }
        ,
        A.prototype.Ow = function(g, A) {
            var I = A.x
              , t = A.y
              , o = A.z
              , B = A.tileSize
              , E = A.projectionId;
            g.z = o,
            g.x = I,
            g.y = t;
            for (var A = polyfill.ProjectionManager.getProjection(E).getResolution(o), A = polyfill.$Q(I, t, o, A, B), Q = (g.Ro = A,
            g.MQ = [A[0], A[1], A[2], A[1], A[2], A[3], A[0], A[3]],
            g.zS = polyfill.lcs.getLocalByCoord([g.Ro[0], g.Ro[1]]),
            g.localCoord = g.zS,
            Object.keys(g.layers)), i = 0; i < Q.length; i++)
                !function(A) {
                    var e = g.layers[Q[A]]
                      , A = e.Cw
                      , i = e.extent;
                    e.Ah = [],
                    e.scale = B / i,
                    e.ox = B * I,
                    e.oy = B * t,
                    polyfill.forEach(A, function(A, i) {
                        if ((A = e.Gw(i)).Dw(),
                        e.Ah.push(A),
                        A.lines && A.lines.length && (2 === A.type || 3 === A.type || 1 === A.type)) {
                            A.Rw = [];
                            for (var g = 0, I = A.lines.length; g < I; g++) {
                                for (var t = [], B = 0, Q = A.lines[g].length; B < Q; B++) {
                                    var C = [e.ox + e.scale * A.lines[g][B][0], e.oy + e.scale * A.lines[g][B][1]]
                                      , C = [(C = polyfill.V[E].Xs(C[0], C[1], o))[0], C[1]];
                                    t.push(C)
                                }
                                A.Rw.push(t)
                            }
                        }
                    })
                }(i);
            return this.uW(g, o),
            this.xw(g),
            this.zw(g),
            g
        }
        ,
        A.prototype.uW = function(A, i) {
            var g, I = [], t = [], B = [], Q = (this.kQ,
            null);
            for (g in this.parent && this.parent.QG && (Q = this.parent.QG),
            this.$h = new MapboxStyle({
                KG: Q
            }).getMapboxStyle(),
            A.bgColor = this.$h.backgroundColor,
            A.layers)
                if (A.layers.hasOwnProperty(g))
                    for (var C = A.layers[g], e = 0; e < C.Ah.length; e += 1) {
                        var o, E = C.Ah[e], h = this.$h.getStyle(E, C.name, !0, i);
                        h && (E.style = h,
                        3 === E.type ? I.push(E) : 2 === E.type ? t.push(E) : 1 === E.type && (o = h.name) && ((o = {
                            name: o,
                            position: E.Rw[0],
                            id: E.id,
                            minzoom: h.th,
                            maxzoom: h.ih
                        }).style = h,
                        B.push(o)))
                    }
            t.sort(function(A, i) {
                return A.style && i.style && A.style.zIndex > i.style.zIndex ? 1 : -1
            }),
            I.sort(function(A, i) {
                return A.style && i.style && A.style.zIndex > i.style.zIndex ? 1 : -1
            }),
            A.polygons = I,
            A.Dh = t,
            A.data.poilabel = ((Q = {})[A.z + "," + A.x + "," + A.y] = B,
            Q),
            delete A.layers
        }
        ,
        A.prototype.startsWith = function(A, i) {
            return A.startsWith ? A.startsWith(i) : A.substr(0, i.length) === i
        }
        ,
        A.prototype.argbHex2Rgba = function(A) {
            for (var i = [], g = 0, I = A.length; g < I; g += 2)
                i.push(parseInt(A.substr(g, 2), 16) / 255);
            return i.push(i.shift()),
            i
        }
        ,
        A.prototype.uQ = function(A, i, g) {
            return g < 0 && (g += 1),
            1 < g && --g,
            g < 1 / 6 ? A + 6 * (i - A) * g : g < .5 ? i : g < 2 / 3 ? A + (i - A) * (2 / 3 - g) * 6 : A
        }
        ,
        A.prototype.GQ = function(A, i, g, I) {
            var t, B, Q;
            return 0 === i ? t = B = Q = g : (t = this.uQ(i = 2 * g - (g = g < .5 ? g * (1 + i) : g + i - g * i), g, A + 1 / 3),
            B = this.uQ(i, g, A),
            Q = this.uQ(i, g, A - 1 / 3)),
            [t, B, Q, I]
        }
        ,
        A.prototype.color2RgbaArray = function(A, i) {
            var g, I, t, B, Q, C, e;
            return void 0 === i && (i = 1),
            A ? (g = A.toString(),
            this.yQ[g] || (A instanceof Array ? A : this.startsWith(A, "hsla") ? (C = A.substr(5).split(","),
            I = parseInt(C[0], 10) / 360,
            t = parseInt(C[1], 10) / 100,
            B = parseInt(C[2], 10) / 100,
            e = parseFloat(C[3]),
            Q = this.GQ(I, t, B, e),
            this.yQ[g] = Q) : this.startsWith(A, "hsl") ? (C = A.substr(4).split(","),
            I = parseInt(C[0], 10) / 360,
            t = parseInt(C[1], 10) / 100,
            B = parseInt(C[2], 10) / 100,
            Q = this.GQ(I, t, B, i),
            this.yQ[g] = Q) : this.startsWith(A, "#") ? 7 === A.length ? (Q = this.argbHex2Rgba("ff" + A.substr(1)),
            this.yQ[g] = Q) : 9 === A.length ? (Q = this.argbHex2Rgba(A.substr(1)),
            this.yQ[g] = Q) : void 0 : this.startsWith(A, "rgba") ? (C = A.substr(5).split(","),
            [parseInt(C[0], 10) / 255, parseInt(C[1], 10) / 255, parseInt(C[2], 10) / 255, e = parseFloat(C[3])]) : this.startsWith(A, "rgb") ? (C = A.substr(4).split(","),
            [parseInt(C[0], 10) / 255, parseInt(C[1], 10) / 255, parseInt(C[2], 10) / 255, e = 1]) : void 0)) : null
        }
        ,
        A.prototype.zw = function(A) {
            if (!A || !A.Dc) {
                var i = new polyfill.fQ
                  , g = (A.Oc = i,
                A.Dc = new polyfill.K_,
                {
                    fillColor: this.color2RgbaArray(A.bgColor),
                    zIndex: 0
                })
                  , I = A.Dc.Nx(A.MQ);
                i.add(g, I);
                for (var t = 0, B = A.polygons; t < B.length; t++) {
                    var Q = B[t]
                      , C = Q.style;
                    if (C && C.fillColor) {
                        C.fillColor = this.color2RgbaArray(C.fillColor);
                        var e = Q.Rw;
                        if (1 < e.length) {
                            for (var o = [], E = 0; E < e.length; E++)
                                polyfill.kS.isClockwise(e[E]) ? o.push([E]) : o.length && o[o.length - 1].push(E);
                            for (var h = 0; h < o.length; h++) {
                                var a = o[h];
                                if (1 < a.length) {
                                    for (var l = [], n = [], s = 0; s < a.length; s++) {
                                        var r = e[a[s]];
                                        0 < s && l.push(n.length / 2);
                                        for (var w = 0; w < r.length; w++) {
                                            var c = r[w];
                                            n.push(c[0], c[1])
                                        }
                                    }
                                    var y = A.Dc.Nx(n, l)
                                } else {
                                    for (n = [],
                                    r = e[a[0]],
                                    w = 0; w < r.length; w++) {
                                        var x = r[w];
                                        n.push(x[0], x[1])
                                    }
                                    y = A.Dc.Nx(n)
                                }
                                i.add(C, y)
                            }
                        } else {
                            for (var d = e.length, n = [], p = 0; p < d; p++) {
                                var D = e[p];
                                if (0 < D.length)
                                    for (w = 0; w < D.length; w++)
                                        h = D[w],
                                        n.push(h[0], h[1])
                            }
                            Q = A.Dc.Nx(n),
                            i.add(C, Q)
                        }
                    }
                }
                delete A.polygons
            }
        }
        ,
        A.prototype.xw = function(A) {
            if (!A || !A.$c) {
                var i = []
                  , g = this.kQ
                  , I = (A.$c = new polyfill.J_,
                new polyfill.fQ);
                A.Uc = I;
                for (var t = 0, B = A.Dh; t < B.length; t++) {
                    var Q = B[t]
                      , C = Q.Rw
                      , e = C.length
                      , o = 0
                      , E = 0;
                    Q.style && Q.style[0] && Q.style[0].borderColor && (Q.style[0].borderColor = this.color2RgbaArray(Q.style[0].borderColor)),
                    Q.style && Q.style[0] && Q.style[0].faceColor && (Q.style[0].faceColor = this.color2RgbaArray(Q.style[0].faceColor));
                    for (var a = (h = Q.style || [])[0], h = h[1], l = 0; l < e; l++) {
                        var n = C[l];
                        if (0 < n.length) {
                            for (var s = [], r = 0; r < n.length; r++) {
                                var w = n[r];
                                s.push(w[0], w[1])
                            }
                            var c = A.$c.hb(s, {
                                X_: 0,
                                lineJoin: "miter",
                                lineCap: "round"
                            });
                            o += c.Iw,
                            E += c.distance
                        }
                    }
                    if (0 < o && (I.add(Q.style, o),
                    Q.distance = E),
                    a && a.borderColor && (Q.style[0].borderColor = this.color2RgbaArray(a.borderColor)),
                    a && a.faceColor && (Q.style[0].faceColor = this.color2RgbaArray(a.faceColor)),
                    h && (Q = h.name || "")) {
                        var a = h.Kr
                          , y = h.Qr;
                        a && !g[a] && (g[a] = polyfill.Util.color2RgbaArray(a)),
                        y && !g[y] && (g[y] = polyfill.Util.color2RgbaArray(y)),
                        h.Kr = g[a],
                        h.Qr = g[y];
                        for (var x = (a = {
                            style: h,
                            path: [],
                            name: Q,
                            distance: E
                        }).path, d = 0; d < e; d++)
                            for (var p = C[d], r = 0; r < p.length; r++)
                                w = p[r],
                                x.push(w[0], w[1]);
                        i.push(a)
                    }
                }
                A.road = i,
                delete A.Dh
            }
        }
        ,
        A.prototype.FQ = function(A) {
            var i, g = {};
            for (i in A)
                A.hasOwnProperty(i) && "fillBucket" !== i && "fillSegements" !== i && "lineBucket" !== i && "lineSegements" !== i && (g[i] = A[i]);
            this.sQ[A.zo.key] = {
                tile: g,
                params: {
                    scale: this.parent.params.scale,
                    tag: "all"
                }
            }
        }
        ,
        A
    }(), _a$1, mapBoxSprite = "https://webapi.amap.com/style_icon/sprite_v8@2x.png", DefaultIconInfo = (_a$1 = {
        TW: {
            img: "https://vdata.amap.com/style_icon/2.0/icon-normal-big.png",
            width: 512,
            height: 1024,
            startX: 0,
            startY: 0,
            status: "loaded",
            type: "icon",
            ext: {
                hv: 0
            }
        },
        RW: {
            img: "https://vdata.amap.com/style_icon/2.0/icon-biz-big.png",
            width: 512,
            height: 1024,
            startX: 0,
            startY: 1024,
            status: "loaded",
            type: "icon",
            ext: {
                hv: 1
            }
        }
    },
    _a$1[mapBoxSprite] = {
        img: mapBoxSprite,
        width: 1024,
        height: 926,
        startX: 0,
        startY: 2048,
        status: "loaded",
        type: "icon",
        ext: {
            hv: 2
        }
    },
    _a$1), ImageManagerWorker = function(g) {
        function A() {
            var A, i = g.call(this) || this;
            return i.Fs = ((A = {})[DefaultIconInfo.TW.img] = DefaultIconInfo.TW,
            A[DefaultIconInfo.RW.img] = DefaultIconInfo.RW,
            A),
            i.Cc = 16,
            i.Uw = 3,
            i.Hw = {},
            i.Mc = {},
            i
        }
        return polyfill.Ei(A, g),
        A.prototype.loadImage = function(A, i) {
            var g = i.name
              , I = i.type
              , t = i.cb
              , B = this.Fs[g = g || A];
            B && B.status === polyfill.uc.LOADED ? t(B, i) : B && B.status === polyfill.uc.LOADING ? (this.Mc[g] || (this.Mc[g] = []),
            this.Mc[g].push({
                cb: t,
                opts: i
            })) : ("icon" === I && (DefaultIconInfo[A] ? i.hv = DefaultIconInfo[A].ext.hv : i.hv = this.Uw,
            this.Uw++),
            this.Rc(A, i))
        }
        ,
        A.prototype.loadImages = function(A, i) {
            var t = this
              , g = i.cb
              , B = i.type;
            if (0 === Object.keys(A).filter(function(A) {
                return !t.Fs[A]
            }).length)
                g();
            else {
                var Q = []
                  , C = [];
                if (A.length) {
                    for (var I = 0, e = A; I < e.length; I++)
                        !function(I) {
                            var A = new Promise(function(g, A) {
                                t.loadImage(I, {
                                    cb: function(A, i) {
                                        C.push(t.Fs[I]),
                                        g()
                                    },
                                    type: B
                                })
                            }
                            );
                            Q.push(A)
                        }(e[I]);
                    Promise.all(Q).then(function() {
                        g(C)
                    }).catch(function() {
                        g(C)
                    })
                } else
                    g(C)
            }
        }
        ,
        A.prototype.Vw = function(A, i) {
            var t = this
              , B = i.cb
              , Q = A.filter(function(A) {
                return !t.Fs[A]
            });
            if (0 === Q.length)
                B([]);
            else {
                var g = []
                  , C = [];
                if (A.length) {
                    for (var I = 0, e = A; I < e.length; I++)
                        !function(I) {
                            var A = new Promise(function(g, A) {
                                t.loadImage(I, {
                                    cb: function(A, i) {
                                        C.push(t.Fs[I]),
                                        g()
                                    },
                                    type: "icon"
                                })
                            }
                            );
                            g.push(A)
                        }(e[I]);
                    Promise.all(g).then(function() {
                        var A = [];
                        if (0 < Q.length) {
                            for (var i = 0, g = Q; i < g.length; i++) {
                                var I = g[i];
                                A.push({
                                    url: I,
                                    data: t.getImage(I)
                                })
                            }
                            t.emit("iconImageLoaded", {
                                data: A
                            })
                        }
                        B(C)
                    }).catch(function() {
                        B(C)
                    })
                } else
                    B(C)
            }
        }
        ,
        A.prototype.getImage = function(A) {
            return this.Fs[A = void 0 === A ? "" : A]
        }
        ,
        A.prototype.destory = function() {
            var A;
            this.Fs = ((A = {})[DefaultIconInfo.TW.img] = DefaultIconInfo.TW,
            A[DefaultIconInfo.RW.img] = DefaultIconInfo.RW,
            A)
        }
        ,
        A.prototype.Rc = function(i, g) {
            var I = this
              , t = g.name
              , A = g.ext
              , B = void 0 === A ? {} : A
              , Q = void 0 === (A = g.type) ? "other" : A
              , C = g.cb
              , e = g.imageBitmap
              , o = this.Fs;
            o[t || i] = {
                status: polyfill.uc.LOADING,
                startX: 0,
                startY: 1024 * (g.hv || 0),
                type: Q,
                height: 0,
                width: 0
            },
            polyfill.Yw.send(i, {
                Me: "arraybuffer",
                qw: function(A) {
                    e ? (console.time("createImageBitmap"),
                    createImageBitmap(new Blob([new Uint8Array(A)])).then(function(A) {
                        console.timeEnd("createImageBitmap"),
                        A = new polyfill.WQ(i,A,{
                            imageBitmap: !0
                        }),
                        I.qQ(t || i, A, C, g, Q, B)
                    })) : (A = new polyfill.WQ(i,A),
                    I.qQ(t || i, A, C, g, Q, B))
                },
                Aw: function(A) {
                    console.log(A),
                    o[A = t || i].status = polyfill.uc.ERROR,
                    C(o[A], g)
                }
            })
        }
        ,
        A.prototype.qQ = function(A, i, g, I, t, B) {
            var Q = this.Fs;
            if ("success" !== i.status)
                console.error("createObjectURL fail"),
                Q[A].status = polyfill.uc.ERROR,
                g(Q[A], I);
            else if ("icon" === t ? (B.hv = I.hv,
            Q[A] = DefaultIconInfo[A] || {
                ext: B,
                type: t,
                startX: 0,
                startY: 1024 * (I.hv || 0),
                height: 1024,
                width: 512,
                status: polyfill.uc.LOADED
            },
            Q[A].data = i) : Q[A] = {
                ext: B,
                type: t,
                startX: 0,
                startY: 0,
                height: 0,
                width: 0,
                data: i,
                status: polyfill.uc.LOADED
            },
            g(Q[A], I),
            this.Mc[A]) {
                for (var C = 0, e = this.Mc[A]; C < e.length; C++) {
                    var o = e[C];
                    o.cb(Q[A], o.opts)
                }
                delete this.Mc[A]
            }
        }
        ,
        A.prototype.Sc = function(A) {
            var i, g = (g = (A = void 0 === A ? {} : A).img) && g.context ? (i = g.width || 0,
            g.height || 0) : (i = A.width || 0,
            A.height || 0);
            return [i, g]
        }
        ,
        A
    }(polyfill.Event), Counter = function(g) {
        function A(A) {
            var i = g.call(this) || this;
            return i.OQ = A,
            i.zQ = 0,
            i
        }
        return polyfill.Ei(A, g),
        A.prototype.TQ = function() {
            this.zQ += 1,
            this.zQ === this.OQ && this.emit("count")
        }
        ,
        A.prototype.clear = function() {
            this.zQ = 0
        }
        ,
        A
    }(polyfill.Event), _a$2, LabelFormatMap$1 = (_a$2 = {},
    _a$2[polyfill.NebulaLabelFormat.id] = polyfill.NebulaLabelFormat,
    _a$2[polyfill.MapboxLabelFormat.id] = polyfill.MapboxLabelFormat,
    _a$2.nebula = polyfill.NebulaLabelFormat,
    _a$2), LabelWorker = function(g) {
        function A(A) {
            var i = g.call(this) || this;
            return i.parent = A,
            i.MW = {},
            i.hD = ["https://vdata.amap.com/style_icon/2.0/icon-normal-big.png", "https://vdata.amap.com/style_icon/2.0/icon-biz-big.png"],
            i.z_ = A.z_,
            i.R_ = A.R_,
            i
        }
        return polyfill.Ei(A, g),
        A.prototype.iW = function(B, Q) {
            var A, E = this, h = (void 0 === Q && (Q = {}),
            this.MW.ZL = Q.ZL || polyfill.zoomRange[1],
            []), a = (Q.cb,
            this.parent.langForeign), l = this;
            for (A in B)
                !function(A) {
                    var C, i, g, I, e, t, o;
                    B.hasOwnProperty(A) && (I = (A = B[A]).tile,
                    i = (A = A.params).scale,
                    A = A.tag,
                    h.push(A),
                    g = {
                        vn: l.parent.vn
                    },
                    i = (g = new LabelFormatMap$1[Q.id](g)).Ns(I, {
                        ZL: l.MW.ZL,
                        zoom: I.zo.z,
                        scale: i,
                        lang: a,
                        VQ: l.parent.QZ
                    }),
                    C = [[I, g, i, A]],
                    i = Object.keys(g.Fs),
                    A = Object.keys(g.Es),
                    g = [I],
                    I = Date.now(),
                    e = [],
                    t = Q.optimalZoom,
                    (o = new Counter(2)).on("count", function() {
                        E.parent.jQ.XQ(new LoadDynamicsTask(E.parent.vn,t,E.R_,E.z_,e,Q,function(A) {
                            E.emit("dynamicTextVerticeLoadedByTile", {
                                data: A.data,
                                id: Q.id
                            })
                        }
                        ), void 0, !0),
                        E.parent.yY.setNeedUpdate(!0)
                    }, null, !0),
                    l.R_.vW(A, {
                        tiles: g,
                        optimalZoom: t,
                        tags: h,
                        stamp: I,
                        cb: function(A) {
                            for (var i = 0, g = C; i < g.length; i++) {
                                var t = (I = g[i])[0]
                                  , B = I[1]
                                  , Q = I[2]
                                  , I = I[3];
                                e.push({
                                    tile: t,
                                    gW: B,
                                    SW: Q,
                                    tag: I
                                })
                            }
                            o.TQ()
                        }
                    }),
                    l.wW(i) ? o.TQ() : l.z_.Vw(i, {
                        type: "icon",
                        cb: function() {
                            o.TQ()
                        }
                    }))
                }(A)
        }
        ,
        A.prototype.hW = function(A, i, g) {
            var I = this;
            this.parent.jQ.XQ(new LoadDynamicsTask(this.parent.vn,this.MW.ZL,this.R_,this.z_,A,g,function(A) {
                I.emit("dynamicTextVerticeLoadedByTile", {
                    data: A.data,
                    id: g.id
                })
            }
            ), void 0, !0),
            this.parent.yY.setNeedUpdate(!0)
        }
        ,
        A.prototype.wW = function(A) {
            for (var i = this.hD, g = 0, I = 0, t = A = void 0 === A ? [] : A; I < t.length; I++) {
                var B = t[I];
                -1 !== i.indexOf(B) && g++
            }
            return g === A.length
        }
        ,
        A
    }(polyfill.Event), LoadDynamicsTask = function() {
        function A(A, i, g, I, t, B, Q) {
            this.vn = A,
            this.ZL = i,
            this.R_ = g,
            this.z_ = I,
            this.data = t,
            this.params = B,
            this.cb = Q,
            this.type = "LoadDynamicsTask",
            this.offset = 0,
            this.result = []
        }
        return A.prototype.play = function(A) {
            for (var i = A, g = Date.now(); 0 < i && this.offset !== this.data.length; ) {
                var I, t = [], B = this.data[this.offset], Q = B.tile, C = B.SW, e = (B.gW,
                B.tag), o = Object.keys(C).length, E = {}, h = 0;
                if (0 === o)
                    t.push({
                        data: Q.zo
                    });
                else {
                    for (var a in C)
                        C.hasOwnProperty(a) && (I = C[a],
                        I = new polyfill.eG({
                            R_: this.R_,
                            z_: this.z_
                        }).Ns(I, {
                            ZL: this.ZL,
                            zoom: Q.zo.z,
                            from: "inner",
                            center: Q.localCoord.center
                        }),
                        E[a] = new polyfill.La(Q.zo,I),
                        ++h === o) && (a = this.hQ(Q, this.ZL),
                        t.push({
                            data: E,
                            XE: a,
                            tag: e
                        }));
                    this.offset++,
                    this.cb({
                        data: t
                    }),
                    i = A - (Date.now() - g)
                }
            }
            return this.offset,
            this.data.length,
            this.result
        }
        ,
        Object.defineProperty(A.prototype, "status", {
            get: function() {
                return this.offset >= this.data.length ? polyfill.vY.finish : polyfill.vY.pause
            },
            eb: !1,
            nb: !0
        }),
        A.prototype.hQ = function(A, i) {
            if (A)
                for (var g = this.SQ(A) || [], I = 0, t = g = new LabelFormatMap$1[A.type]({
                    vn: this.vn
                }).DQ(g, {
                    zoom: i
                }); I < t.length; I++) {
                    var B = t[I]
                      , Q = B.CO;
                    B.EG || (B.EG = {});
                    for (var C = 0, e = Q; C < e.length; C++) {
                        var o = e[C]
                          , E = this.R_.mz(o);
                        B.EG[o] = E
                    }
                }
            return g
        }
        ,
        A.prototype.SQ = function(A) {
            return A.data && A.data.roadName || A.road
        }
        ,
        A
    }(), InnerLabelsSourceWorker = function() {
        function A(A) {
            this.parent = A,
            this.Mf = A.R_,
            this.ac = A.z_
        }
        return A.prototype.loadData = function(t, B) {
            var Q = this
              , A = t.id === polyfill.n0.nebulaLabel ? polyfill.n0.nebula : t.id;
            (A = this.parent.dQ(A)) && A.YE ? A.YE(function(A, i) {
                i.GW;
                var g = i.cb
                  , I = i.ZL
                  , i = i.optimalZoom;
                polyfill.isEmpty(A) ? B && B({}) : Q.parent.yw.iW(A, {
                    ZL: I,
                    optimalZoom: i,
                    id: t.id,
                    cb: function(A) {
                        B(A),
                        g && g()
                    }
                })
            }, t) : B && B({})
        }
        ,
        A
    }(), StaticSourceID, EnumTextureIndex, ImageStatus, noop = (function(A) {
        A.nebula = "nebula",
        A.nebulaLabel = "nebulaLabel"
    }(StaticSourceID = StaticSourceID || {}),
    function(A) {
        A[A.dynamic = 0] = "dynamic",
        A[A.icon = 1] = "icon"
    }(EnumTextureIndex = EnumTextureIndex || {}),
    function(A) {
        A.BLOB = "blob",
        A.TOLOAD = "toload",
        A.LOADING = "loading",
        A.LOADED = "loaded",
        A.UNLOADED = "unloaded",
        A.ERROR = "error",
        A.RELOADING = "reloading",
        A.UNCOMBINED = "uncombined",
        A.COMBINING = "combining",
        A.COMBINED = "combined"
    }(ImageStatus = ImageStatus || {}),
    function(A) {}
    ), XHR = {
        send: function(A, i) {
            void 0 === i && (i = {});
            var g = new XMLHttpRequest
              , t = void 0 === (I = i.qw) ? noop : I
              , B = void 0 === (I = i.Aw) ? noop : I
              , I = i.Me
              , Q = i.method
              , i = i.content;
            return g.onreadystatechange = function() {
                if (4 === g.readyState && 200 === g.status) {
                    var A = g.response;
                    try {
                        t(A)
                    } catch (A) {
                        B(A)
                    }
                } else
                    404 === g.status && (g.abort(),
                    B(Error("404")))
            }
            ,
            g.onerror = function(A) {
                g.abort(),
                B(A)
            }
            ,
            g.open(Q || "GET", A, !0),
            g.responseType = I || "json",
            g.send(i || void 0),
            g
        }
    };
    function parserFunc(A) {
        var M = {
            TS: function() {
                this.PS = 0
            }
        }
          , mA = (M.TS.prototype.create = function(A) {
            this.OS && this.PS === A || (this.OS = []),
            this.PS = A,
            this.FS = 0,
            this.BS = 0
        }
        ,
        M.TS.prototype.flush = function() {
            var A = this.FS - this.BS;
            if (0 !== A) {
                for (; A--; )
                    this.ES.jS(this.OS[this.BS++]);
                this.FS >= this.PS && (this.FS = 0),
                this.BS = this.FS
            }
        }
        ,
        M.TS.prototype.NS = function() {
            this.flush(),
            this.ES = null
        }
        ,
        M.TS.prototype.US = function(A) {
            this.NS(),
            this.ES = A
        }
        ,
        M.TS.prototype.init = function(A) {
            A || (this.BS = 0,
            this.FS = 0)
        }
        ,
        M.TS.prototype.WS = function(A, i) {
            var g = this.FS - A - 1;
            for (g < 0 && (g += this.PS); i--; )
                g >= this.PS && (g = 0),
                this.OS[this.FS++] = this.OS[g++],
                this.FS >= this.PS && this.flush()
        }
        ,
        M.TS.prototype.GS = function(A) {
            this.OS[this.FS++] = A,
            this.FS >= this.PS && this.flush()
        }
        ,
        M.TS.prototype.HS = function(A) {
            return (A = this.FS - A - 1) < 0 && (A += this.PS),
            this.OS[A]
        }
        ,
        M.VS = function() {}
        ,
        M.VS.prototype.US = function(A) {
            this.ES = A
        }
        ,
        M.VS.prototype.NS = function() {
            this.ES = null
        }
        ,
        M.VS.prototype.init = function() {
            var A = 5;
            for (this.ZS = 0,
            this.YS = -1; A--; )
                this.ZS = this.ZS << 8 | this.ES.JS()
        }
        ,
        M.VS.prototype.XS = function(A) {
            for (var i, g = 0, I = A; I--; )
                this.YS >>>= 1,
                i = this.ZS - this.YS >>> 31,
                this.ZS -= this.YS & i - 1,
                g = g << 1 | 1 - i,
                0 == (4278190080 & this.YS) && (this.ZS = this.ZS << 8 | this.ES.JS(),
                this.YS <<= 8);
            return g
        }
        ,
        M.VS.prototype.qS = function(A, i) {
            var g = A[i]
              , I = (this.YS >>> 11) * g;
            return (2147483648 ^ this.ZS) < (2147483648 ^ I) ? (this.YS = I,
            A[i] += 2048 - g >>> 5,
            0 == (4278190080 & this.YS) && (this.ZS = this.ZS << 8 | this.ES.JS(),
            this.YS <<= 8),
            0) : (this.YS -= I,
            this.ZS -= I,
            A[i] -= g >>> 5,
            0 == (4278190080 & this.YS) && (this.ZS = this.ZS << 8 | this.ES.JS(),
            this.YS <<= 8),
            1)
        }
        ,
        M.QS = function(A, i) {
            for (; i--; )
                A[i] = 1024
        }
        ,
        M.KS = function(A) {
            this.tR = [],
            this.iR = A
        }
        ,
        M.KS.prototype.init = function() {
            M.QS(this.tR, 1 << this.iR)
        }
        ,
        M.KS.prototype.decode = function(A) {
            for (var i = 1, g = this.iR; g--; )
                i = i << 1 | A.qS(this.tR, i);
            return i - (1 << this.iR)
        }
        ,
        M.KS.prototype.eR = function(A) {
            for (var i, g = 1, I = 0, t = 0; t < this.iR; ++t)
                g = g << 1 | (i = A.qS(this.tR, g)),
                I |= i << t;
            return I
        }
        ,
        M.nR = function(A, i, g, I) {
            for (var t, B = 1, Q = 0, C = 0; C < I; ++C)
                B = B << 1 | (t = g.qS(A, i + B)),
                Q |= t << C;
            return Q
        }
        ,
        M.oR = function() {
            this.rR = [],
            this.aR = [],
            this.sR = [],
            this.hR = new M.KS(8),
            this.lR = 0
        }
        ,
        M.oR.prototype.create = function(A) {
            for (; this.lR < A; ++this.lR)
                this.aR[this.lR] = new M.KS(3),
                this.sR[this.lR] = new M.KS(3)
        }
        ,
        M.oR.prototype.init = function() {
            var A = this.lR;
            for (M.QS(this.rR, 2); A--; )
                this.aR[A].init(),
                this.sR[A].init();
            this.hR.init()
        }
        ,
        M.oR.prototype.decode = function(A, i) {
            return 0 === A.qS(this.rR, 0) ? this.aR[i].decode(A) : 0 === A.qS(this.rR, 1) ? 8 + this.sR[i].decode(A) : 16 + this.hR.decode(A)
        }
        ,
        M.fR = function() {
            this.uR = []
        }
        ,
        M.fR.prototype.init = function() {
            M.QS(this.uR, 768)
        }
        ,
        M.fR.prototype.cR = function(A) {
            for (var i = 1; (i = i << 1 | A.qS(this.uR, i)) < 256; )
                ;
            return 255 & i
        }
        ,
        M.fR.prototype.dR = function(A, i) {
            var g, I, t = 1;
            do {
                if (g = i >> 7 & 1,
                i <<= 1,
                t = t << 1 | (I = A.qS(this.uR, (1 + g << 8) + t)),
                g !== I) {
                    for (; t < 256; )
                        t = t << 1 | A.qS(this.uR, t);
                    break
                }
            } while (t < 256);
            return 255 & t
        }
        ,
        M.pR = function() {}
        ,
        M.pR.prototype.create = function(A, i) {
            var g;
            if (!this.vR || this.mR !== i || this.yR !== A)
                for (this.yR = A,
                this.xR = (1 << A) - 1,
                this.mR = i,
                this.vR = [],
                g = 1 << this.mR + this.yR; g--; )
                    this.vR[g] = new M.fR
        }
        ,
        M.pR.prototype.init = function() {
            for (var A = 1 << this.mR + this.yR; A--; )
                this.vR[A].init()
        }
        ,
        M.pR.prototype.bR = function(A, i) {
            return this.vR[((A & this.xR) << this.mR) + ((255 & i) >>> 8 - this.mR)]
        }
        ,
        M.gR = function() {
            this.wR = new M.TS,
            this._R = new M.VS,
            this.kR = [],
            this.MR = [],
            this.SR = [],
            this.RR = [],
            this.zR = [],
            this.CR = [],
            this.AR = [],
            this.IR = [],
            this.$R = new M.KS(4),
            this.LR = new M.oR,
            this.DR = new M.oR,
            this.TR = new M.pR,
            this.PR = -1,
            this.OR = -1,
            this.AR[0] = new M.KS(6),
            this.AR[1] = new M.KS(6),
            this.AR[2] = new M.KS(6),
            this.AR[3] = new M.KS(6)
        }
        ,
        M.gR.prototype.FR = function(A) {
            return !(A < 0 || (this.PR !== A && (this.PR = A,
            this.OR = Math.max(this.PR, 1),
            this.wR.create(Math.max(this.OR, 4096))),
            0))
        }
        ,
        M.gR.prototype.BR = function(A, i, g) {
            var I = 1 << g;
            return !(8 < A || 4 < i || 4 < g || (this.TR.create(i, A),
            this.LR.create(I),
            this.DR.create(I),
            this.jR = I - 1,
            0))
        }
        ,
        M.gR.prototype.init = function() {
            var A = 4;
            for (this.wR.init(!1),
            M.QS(this.kR, 192),
            M.QS(this.CR, 192),
            M.QS(this.MR, 12),
            M.QS(this.SR, 12),
            M.QS(this.RR, 12),
            M.QS(this.zR, 12),
            M.QS(this.IR, 114),
            this.TR.init(); A--; )
                this.AR[A].init();
            this.LR.init(),
            this.DR.init(),
            this.$R.init(),
            this._R.init()
        }
        ,
        M.gR.prototype.decode = function(A, i, g) {
            var I, t, B, Q, C = 0, e = 0, o = 0, E = 0, h = 0, a = 0, l = 0;
            for (this._R.US(A),
            this.wR.US(i),
            this.init(); g < 0 || a < g; )
                if (Q = a & this.jR,
                0 === this._R.qS(this.kR, (C << 4) + Q))
                    B = this.TR.bR(a++, l),
                    l = 7 <= C ? B.dR(this._R, this.wR.HS(e)) : B.cR(this._R),
                    this.wR.GS(l),
                    C = C < 4 ? 0 : C - (C < 10 ? 3 : 6);
                else {
                    if (1 === this._R.qS(this.MR, C))
                        (I = 0) === this._R.qS(this.SR, C) ? 0 === this._R.qS(this.CR, (C << 4) + Q) && (C = C < 7 ? 9 : 11,
                        I = 1) : (0 === this._R.qS(this.RR, C) ? t = o : (0 === this._R.qS(this.zR, C) ? t = E : (t = h,
                        h = E),
                        E = o),
                        o = e,
                        e = t),
                        0 === I && (I = 2 + this.DR.decode(this._R, Q),
                        C = C < 7 ? 8 : 11);
                    else if (h = E,
                    E = o,
                    o = e,
                    I = 2 + this.LR.decode(this._R, Q),
                    C = C < 7 ? 7 : 10,
                    4 <= (B = this.AR[I <= 5 ? I - 2 : 3].decode(this._R))) {
                        if (e = (2 | 1 & B) << (Q = (B >> 1) - 1),
                        B < 14)
                            e += M.nR(this.IR, e - B - 1, this._R, Q);
                        else if ((e = (e += this._R.XS(Q - 4) << 4) + this.$R.eR(this._R)) < 0) {
                            if (-1 === e)
                                break;
                            return !1
                        }
                    } else
                        e = B;
                    if (a <= e || e >= this.OR)
                        return !1;
                    this.wR.WS(e, I),
                    a += I,
                    l = this.wR.HS(0)
                }
            return this.wR.flush(),
            this.wR.NS(),
            this._R.NS(),
            !0
        }
        ,
        M.gR.prototype.ER = function(A) {
            var i;
            return !(A.size < 5 || (i = A.JS(),
            !this.BR(i % 9, (i = ~~(i / 9)) % 5, ~~(i / 5)))) && (i = A.JS(),
            i = (i = (i |= A.JS() << 8) | A.JS() << 16) + 16777216 * A.JS(),
            this.FR(i))
        }
        ,
        M.NR = function(A, i) {
            var g, I = new M.gR;
            if (!I.ER(A))
                throw new Error("Incorrect stream properties");
            if (g = A.JS(),
            g = ((g |= A.JS() << 8) | A.JS() << 16) + 16777216 * A.JS(),
            A.JS(),
            A.JS(),
            A.JS(),
            A.JS(),
            I.decode(A, i, g))
                return !0;
            throw new Error("Error in data stream")
        }
        ,
        1e-9);
        function qA(A, i, g) {
            for (var I, e, t = A.subarray(i, g), B = 0, Q = "", C = 0, B = 0; B < t.length; )
                (e = t[B]) >>> 7 == 0 ? ("0" !== (I = String.fromCharCode(t[B])).charCodeAt(0).toString(16) && (Q += I),
                B += 1) : 252 == (252 & e) ? (C = (3 & t[B]) << 30,
                C = (C = (C = (C = (C |= (63 & t[B + 1]) << 24) | (63 & t[B + 2]) << 18) | (63 & t[B + 3]) << 12) | (63 & t[B + 4]) << 6) | 63 & t[B + 5],
                Q += String.fromCharCode(C),
                B += 6) : 248 == (248 & e) ? (C = (7 & t[B]) << 24,
                C = (C = (C = (C |= (63 & t[B + 1]) << 18) | (63 & t[B + 2]) << 12) | (63 & t[B + 3]) << 6) | 63 & t[B + 4],
                Q += String.fromCharCode(C),
                B += 5) : 240 == (240 & e) ? (C = (15 & t[B]) << 18,
                C = (C = (C |= (63 & t[B + 1]) << 12) | (63 & t[B + 2]) << 6) | 63 & t[B + 3],
                Q += String.fromCharCode(C),
                B += 4) : 224 == (224 & e) ? (C = (31 & t[B]) << 12,
                C = (C |= (63 & t[B + 1]) << 6) | 63 & t[B + 2],
                Q += String.fromCharCode(C),
                B += 3) : 192 == (192 & e) ? (C = (63 & t[B]) << 6,
                C |= 63 & t[B + 1],
                Q += String.fromCharCode(C),
                B += 2) : ("0" !== (I = String.fromCharCode(t[B])).charCodeAt(0).toString(16) && (Q += I),
                B += 1);
            return Q.trim()
        }
        var I = new RegExp("^[+\\-]?[0-1]*[.]?[0-1]*$","gi");
        function WA(A, i) {
            A = A.toString(),
            i = i.toString(),
            A = new Array(32 - A.length + 1).join("0") + A,
            i = new Array(32 - i.length + 1).join("0") + i;
            var g = I;
            return g.lastIndex = 0,
            (i = (i + A).toString().match(g)) ? (A = -1 === i[A = 0].indexOf(".") ? parseInt(i, 2) : A).toString(36).toUpperCase() : "error"
        }
        A.getUnifyJson = function(A) {
            var i = [];
            if (A instanceof ArrayBuffer) {
                var g = new DataView(A)
                  , I = 0
                  , t = g.getInt16(I += 4, !1);
                I += 2;
                try {
                    for (; 0 < t; ) {
                        I += 4;
                        for (var B = g.getUint8(I), Q = (I += 1,
                        new ArrayBuffer(B)), C = new Uint8Array(Q), e = 0; e < B; e++)
                            C[e] = g.getUint8(I),
                            I += 1;
                        var o = qA(C, 0, B)
                          , E = (I += 2,
                        g.getInt8(I))
                          , h = (I += 1,
                        0 !== E && ((G = {}).status = E,
                        G.building = {},
                        G.floor = {},
                        G.id = o,
                        i.push(G)),
                        g.getInt32(I, !1))
                          , a = (I += 4,
                        g.getInt32(I, !0))
                          , l = (I += 4,
                        h - a);
                        if (0 !== a) {
                            for (var n = 2078870821, s = 8 * Math.ceil(a / 8), r = a % 8, w = new ArrayBuffer(s), c = new Int32Array(w), y = 0; 8 <= a; ) {
                                var x = g.getInt32(I, !0)
                                  , d = g.getInt32(I + 4, !0)
                                  , p = x ^ n
                                  , D = 292664 ^ d;
                                c[y] = p,
                                c[y + 1] = D,
                                y += 2,
                                I += 8,
                                a -= 8
                            }
                            0 !== a && (x = g.getInt32(I, !0),
                            d = g.getInt32(I + 4, !0),
                            p = x ^ n,
                            D = 292664 ^ d,
                            c[y] = p,
                            c[y + 1] = D,
                            I += a);
                            for (var f = new Uint8Array(w), R = f.length, u = R - 8 + r, v = new Uint8Array(u), e = 0; e < u; e++)
                                v[e] = f[e];
                            for (e = 0; e < r; e++)
                                v[u - r + e] = f[R - 1 - e];
                            for (var G, S = {
                                data: [],
                                offset: 0,
                                jS: function(A) {
                                    this.data[this.offset++] = A
                                }
                            }, F = (M.NR({
                                data: v,
                                offset: 0,
                                JS: function() {
                                    return this.data[this.offset++]
                                }
                            }, S),
                            S.data), u = F.length, b = new ArrayBuffer(u), k = new Int8Array(b), e = 0; e < u; e++)
                                k[e] = F[e];
                            (G = function(A) {
                                for (var i = {}, g = {}, I = new Uint8Array(A), t = new DataView(A), B = 0, J = t.getInt32(B = B + 4 + 4, !0), A = t.getInt32(B = B + 4 + 4, !0), A = WA(A = t.getUint32(B = B + (4 + A) + 4, !0).toString(2), t.getUint32(B + 4, !0).toString(2)), Q = qA(I, B += 8, B + 64), C = qA(I, B += 64, B + 64), e = t.getInt8(B += 64), U = qA(I, B += 1, B + 8), L = t.getInt16(B += 8, !0), H = t.getInt16(B + 2, !0), o = t.getFloat32(B += 4, !0), E = t.getFloat32(B + 4, !0), K = t.getFloat32(B += 8, !0), m = t.getFloat32(B + 4, !0), q = t.getFloat32(B += 8, !0), W = t.getFloat32(B + 4, !0), h = t.getInt32(B += 8, !0), a = t.getInt32(B += 4, !0), l = t.getInt32(B += 4, !0), n = (B += 4,
                                []), s = 0; s < h; s++)
                                    n.push(t.getInt32(B, !0)),
                                    B += 4;
                                for (var r = [], s = 0; s < l; s++)
                                    r.push(t.getInt32(B, !0)),
                                    B += 4;
                                for (var w = [], s = 0; s < h; s++) {
                                    var Z = qA(I, B, B + 48);
                                    w.push(Z),
                                    B += 48
                                }
                                for (var c = [], s = 0; s < h; s++) {
                                    var j = qA(I, B, B + 8);
                                    c.push(j),
                                    B += 8
                                }
                                for (var y = [], s = 0; s < a; s++) {
                                    var x = t.getInt32(B, !0) * mA + E
                                      , d = t.getInt32(B + 4, !0) * mA + o;
                                    y.push([x, d]),
                                    B += 8
                                }
                                A = {
                                    type: "Feature",
                                    geometry: {
                                        type: "Polygon",
                                        coordinates: [y]
                                    },
                                    properties: {
                                        pid: A,
                                        name_cn: Q,
                                        name_en: C,
                                        default_floor: e,
                                        buildingtype: U,
                                        building_poi_style: [L, H],
                                        centerPoint: [E, o],
                                        left_bottom_Point: [K, m],
                                        width: q,
                                        height: W,
                                        numberofFloor: h,
                                        numberofGeoPoints: a,
                                        park_floor_count: l,
                                        floor_indexs: n,
                                        park_floors: r,
                                        floor_names: w,
                                        floor_nonas: c
                                    }
                                };
                                for (var p = 0; p < J; p++) {
                                    for (var X = qA(I, B, B + 8), D = (B += 8,
                                    t.getInt8(B)), z = (B += 1,
                                    g[D] = {
                                        floor: {},
                                        shops: [],
                                        pubs: [],
                                        cons: []
                                    },
                                    t.getInt16(B, !0)), T = t.getInt16(B + 2, !0), O = (B += 4,
                                    t.getInt16(B, !0)), V = t.getInt16(B + 2, !0), P = (B += 4,
                                    t.getInt16(B, !0)), _ = t.getInt16(B + 2, !0), f = (B += 4,
                                    t.getInt32(B, !0)), R = (B += 4,
                                    t.getInt32(B, !0)), u = (B += 4,
                                    t.getInt32(B, !0)), v = (B += 4,
                                    t.getInt32(B, !0)), G = (B += 4,
                                    []), S = 0; S < v; S++) {
                                        for (var $ = t.getInt32(B, !0), F = (B += 4,
                                        []), b = 0; b < $; b++)
                                            x = t.getInt32(B, !0) * mA + E,
                                            d = t.getInt32(B + 4, !0) * mA + o,
                                            F.push([x, d]),
                                            B += 8;
                                        G.push(F)
                                    }
                                    for (var k = "Polygon", M = G[0], k = (1 < v && (k = "MultiPolygon",
                                    M = G),
                                    {
                                        type: "Feature",
                                        geometry: {
                                            type: k,
                                            coordinates: [M]
                                        },
                                        properties: {
                                            namecode: X,
                                            index: D,
                                            floor_region_type: [z, T],
                                            unhighlighted_floor_line_style: [O, V],
                                            highlighted_floor_line_style: [P, _],
                                            numberofShopCount: f,
                                            numberofPubCount: R,
                                            numberofConCount: u,
                                            floor_area_count: v
                                        }
                                    }), AA = (g[D].floor = k,
                                    []), iA = 0; iA < f; iA++) {
                                        var gA = qA(I, B, B + 128);
                                        B += 128;
                                        for (var IA = WA(t.getUint32(B, !0).toString(2), t.getUint32(B + 4, !0).toString(2)), tA = qA(I, B += 8, B + 24), BA = qA(I, B += 24, B + 12), QA = (B += 12,
                                        t.getInt32(B, !0)), CA = (B += 4,
                                        t.getFloat32(B, !0)), eA = (B += 4,
                                        t.getInt8(B)), oA = (B += 1,
                                        t.getInt16(B, !0)), EA = t.getInt16(B + 2, !0), hA = (B += 4,
                                        t.getInt16(B, !0)), aA = t.getInt16(B + 2, !0), lA = (B += 4,
                                        t.getInt32(B, !0) * mA + E), nA = t.getInt32(B + 4, !0) * mA + o, sA = (B += 8,
                                        t.getInt32(B, !0)), rA = (B += 4,
                                        []), S = 0; S < sA; S++)
                                            x = t.getInt32(B, !0) * mA + E,
                                            d = t.getInt32(B + 4, !0) * mA + o,
                                            rA.push([x, d]),
                                            B += 8;
                                        AA.push({
                                            type: "Feature",
                                            geometry: {
                                                type: "Polygon",
                                                coordinates: [rA]
                                            },
                                            properties: {
                                                name: gA,
                                                pid: IA,
                                                cpid: tA,
                                                logo: BA,
                                                area: QA,
                                                rank: CA,
                                                height: eA,
                                                poitype: [oA, EA],
                                                regiontype: [hA, aA],
                                                font_anthor_point: [lA, nA],
                                                shop_point_number: sA
                                            }
                                        })
                                    }
                                    g[D].shops = AA;
                                    for (var wA = [], cA = 0; cA < R; cA++) {
                                        var yA = qA(I, B, B + 24);
                                        B += 24;
                                        var xA = WA(t.getUint32(B, !0).toString(2), t.getUint32(B + 4, !0).toString(2))
                                          , dA = qA(I, B += 8, B + 48)
                                          , pA = (B += 48,
                                        t.getFloat32(B, !0))
                                          , DA = (B += 4,
                                        t.getInt16(B, !0))
                                          , fA = t.getInt16(B + 2, !0)
                                          , x = (B += 4,
                                        t.getInt32(B, !0) * mA + E)
                                          , d = t.getInt32(B + 4, !0) * mA + o;
                                        B += 8,
                                        wA.push({
                                            type: "Feature",
                                            geometry: {
                                                type: "Point",
                                                coordinates: [x, d]
                                            },
                                            properties: {
                                                cpid: yA,
                                                pid: xA,
                                                name: dA,
                                                rank: pA,
                                                poitype: [DA, fA]
                                            }
                                        })
                                    }
                                    g[D].pubs = wA;
                                    for (var RA = [], uA = 0; uA < u; uA++) {
                                        var vA = qA(I, B, B + 24);
                                        B += 24;
                                        var GA = WA(t.getUint32(B, !0).toString(2), t.getUint32(B + 4, !0).toString(2))
                                          , SA = qA(I, B += 8, B + 48)
                                          , FA = (B += 48,
                                        t.getFloat32(B, !0))
                                          , bA = (B += 4,
                                        t.getInt16(B, !0))
                                          , kA = t.getInt16(B + 2, !0)
                                          , x = (B += 4,
                                        t.getInt32(B, !0) * mA + E)
                                          , d = t.getInt32(B + 4, !0) * mA + o;
                                        B += 8,
                                        RA.push({
                                            type: "Feature",
                                            geometry: {
                                                type: "Point",
                                                coordinates: [x, d]
                                            },
                                            properties: {
                                                cpid: vA,
                                                pid: GA,
                                                name: SA,
                                                rank: FA,
                                                poitype: [bA, kA]
                                            }
                                        })
                                    }
                                    g[D].cons = RA
                                }
                                for (var Q = t.getInt32(B += 4, !0), MA = t.getInt32(B += 4 + Q, !0), YA = (B += 4,
                                []), s = 0; s < MA; s++)
                                    x = t.getInt32(B, !0) * mA + E,
                                    d = t.getInt32(B + 4, !0) * mA + o,
                                    YA.push([x, d]),
                                    B += 8;
                                A.properties.outside_outline = YA;
                                var Y, N = {};
                                for (Y in g)
                                    if (g.hasOwnProperty(Y)) {
                                        for (N.floor = g[Y].floor,
                                        b = 0; b < g[Y].shops.length; b++) {
                                            var NA = t.getInt16(B, !0)
                                              , JA = (B += 2,
                                            t.getInt16(B, !0));
                                            B += 2,
                                            g[Y].shops[b].properties.zoom_min = NA,
                                            g[Y].shops[b].properties.zoom_max = JA
                                        }
                                        for (N.shops = g[Y].shops,
                                        b = 0; b < g[Y].pubs.length; b++) {
                                            var UA = t.getInt16(B, !0)
                                              , LA = (B += 2,
                                            t.getInt16(B, !0));
                                            B += 2,
                                            g[Y].pubs[b].properties.zoom_min = UA,
                                            g[Y].pubs[b].properties.zoom_max = LA
                                        }
                                        for (N.pubs = g[Y].pubs,
                                        b = 0; b < g[Y].cons.length; b++) {
                                            var HA = t.getInt16(B, !0)
                                              , KA = (B += 2,
                                            t.getInt16(B, !0));
                                            B += 2,
                                            g[Y].cons[b].properties.zoom_min = HA,
                                            g[Y].cons[b].properties.zoom_max = KA
                                        }
                                        N.cons = g[Y].cons,
                                        i.floor = N
                                    }
                                return C = t.getInt32(B += 4, !0),
                                e = t.getInt8(B += 4 + C),
                                B += 1,
                                A.properties.UR = e,
                                i.building = A,
                                i
                            }(b)).status = E,
                            G.id = o,
                            i.push(G)
                        }
                        I += l,
                        --t
                    }
                } catch (A) {}
            } else
                i.push(G = {
                    status: 3,
                    building: {},
                    floor: {},
                    id: ""
                });
            return i
        }
    }
    var obj = {
        WR: parserFunc
    }, IndoorMapBinDataParser = (parserFunc(obj),
    obj), OverlayWorker = function() {
        function A(A) {
            this.parent = A
        }
        return A.prototype.setPathWebgl = function(A, i) {
            try {
                for (var g = new polyfill.K_, I = new polyfill.J_, t = new polyfill.oE, B = new polyfill.oE, Q = A.data, C = this.EW(Q[0][0][0]), e = 0, o = Q; e < o.length; e++) {
                    for (var E = o[e], h = C.center, a = [], l = [], n = E[0], s = [], r = [], w = [], c = 0, y = n; c < y.length; c++) {
                        var x = y[c]
                          , d = polyfill.ProjectionManager.getProjection("EPSG:3857").project(x[0], x[1]);
                        a.push(d[0] - h[0], d[1] - h[1]),
                        l.push(x)
                    }
                    for (var p = 1, D = E.length; p < D; p++) {
                        for (var f = E[p], R = [], u = [], v = 0, G = f; v < G.length; v++)
                            x = G[v],
                            polyfill.Bs(x) ? (R.push(x.pos[0] - h[0], x.pos[1] - h[1]),
                            u.push(x.toJSON())) : (d = polyfill.ProjectionManager.getProjection("EPSG:3857").project(x[0], x[1]),
                            R.push(d[0] - h[0], d[1] - h[1]),
                            u.push(x));
                        s.push(R),
                        r.push(u)
                    }
                    for (var S = [], p = 0, D = a.length; p < D; p += 2)
                        S.push(polyfill.xd(a[p], a[p + 1]));
                    polyfill.equals(S[0], S[S.length - 1]) || S.push(polyfill.Ex(S[0]));
                    for (var F = a.length, p = 0; p < s.length; p++)
                        w.push(F / 2),
                        F += s[p].length,
                        polyfill.Util.Ig(a, s[p]);
                    for (var b = g.Nx(a, w), k = (t.add(b),
                    I.Nx(S, {
                        lineJoin: "miter"
                    }).Iw), p = 0; p < s.length; p++) {
                        for (var M = [], Y = 0, D = (R = s[p]).length; Y < D; Y += 2)
                            M.push(polyfill.xd(R[Y], R[Y + 1]));
                        M.push(polyfill.xd(R[0], R[1])),
                        k += I.Nx(M, {
                            lineJoin: "miter"
                        }).Iw
                    }
                    B.add(k)
                }
                i(null, {
                    $c: I,
                    Dc: g,
                    Sx: C,
                    Oc: t,
                    Uc: B
                })
            } catch (A) {
                i(A.message)
            }
        }
        ,
        A.prototype.AW = function(A, i) {
            try {
                var g = {}
                  , I = IndoorMapBinDataParser.getUnifyJson(A);
                if (!I)
                    return !1;
                for (var t, B, Q, C, e, o, E, h = 0; h < I.length; h++)
                    0 === I[h].status && (B = (t = I[h]).floor,
                    Q = t.building,
                    C = t.status,
                    e = t.id,
                    o = B.floor.properties.index,
                    g[e] || (g[e] = {}),
                    g[e].building = Q,
                    g[e].data || (g[e].data = {}),
                    E = {
                        floor: B,
                        status: C,
                        id: e,
                        building: Q
                    },
                    g[e].data[o] = E);
                i(null, g)
            } catch (A) {
                i(A.message, null)
            }
        }
        ,
        A.prototype.EW = function(A) {
            if (A)
                return A = polyfill.Bs(A) ? polyfill.ProjectionManager.getProjection("EPSG:3857").project(A.KL, A.kT) : polyfill.ProjectionManager.getProjection("EPSG:3857").project(A[0], A[1]),
                polyfill.lcs.getLocalByCoord(A)
        }
        ,
        A
    }(), wasm, heap = new Array(32).fill(void 0);
    function getObject(A) {
        return heap[A]
    }
    heap.push(void 0, null, !0, !1);
    var heap_next = heap.length;
    function dropObject(A) {
        A < 36 || (heap[A] = heap_next,
        heap_next = A)
    }
    function takeObject(A) {
        getObject(A),
        dropObject(A)
    }
    var cachedTextDecoder = self.TextDecoder ? new TextDecoder("utf-8",{
        ignoreBOM: !0,
        fatal: !0
    }) : {}
      , cachegetUint8Memory0 = (cachedTextDecoder.decode && cachedTextDecoder.decode(),
    null);
    function getUint8Memory0() {
        return cachegetUint8Memory0 = null !== cachegetUint8Memory0 && cachegetUint8Memory0.buffer === wasm.memory.buffer ? cachegetUint8Memory0 : new Uint8Array(wasm.memory.buffer)
    }
    function getStringFromWasm0(A, i) {
        return cachedTextDecoder.decode(getUint8Memory0().subarray(A, A + i))
    }
    var WASM_VECTOR_LEN = 0
      , cachedTextEncoder = self.TextEncoder ? new TextEncoder : {}
      , encodeString = "function" == typeof cachedTextEncoder.encodeInto ? function(A, i) {
        return cachedTextEncoder.encodeInto(A, i)
    }
    : function(A, i) {
        var g = cachedTextEncoder.encode(A);
        return i.set(g),
        {
            read: A.length,
            jW: g.length
        }
    }
    ;
    function passStringToWasm0(A, i, g) {
        var I;
        if (void 0 === g)
            return I = i((t = cachedTextEncoder.encode(A)).length),
            getUint8Memory0().subarray(I, I + t.length).set(t),
            WASM_VECTOR_LEN = t.length,
            I;
        for (var t, B = A.length, Q = i(B), C = getUint8Memory0(), e = 0; e < B; e++) {
            var o = A.charCodeAt(e);
            if (127 < o)
                break;
            C[Q + e] = o
        }
        return e !== B && (Q = g(Q, B, B = e + 3 * (A = 0 !== e ? A.slice(e) : A).length),
        t = getUint8Memory0().subarray(Q + e, Q + B),
        e += encodeString(A, t).jW),
        WASM_VECTOR_LEN = e,
        Q
    }
    var cachegetInt32Memory0 = null;
    function getInt32Memory0() {
        return cachegetInt32Memory0 = null !== cachegetInt32Memory0 && cachegetInt32Memory0.buffer === wasm.memory.buffer ? cachegetInt32Memory0 : new Int32Array(wasm.memory.buffer)
    }
    function addHeapObject(A) {
        heap_next === heap.length && heap.push(heap.length + 1);
        var i = heap_next;
        return heap_next = heap[i],
        heap[i] = A,
        i
    }
    var RSAPublicKeyPair = function() {
        function g() {
            var A = wasm.rsapublickeypair_new();
            return g.XW(A)
        }
        return g.XW = function(A) {
            var i = Object.create(g.prototype);
            return i.UW = A,
            i
        }
        ,
        g.prototype.VW = function() {
            var A = this.UW;
            this.UW = 0,
            wasm.__wbg_rsapublickeypair_free(A)
        }
        ,
        g.prototype.init = function() {
            wasm.rsapublickeypair_init(this.UW)
        }
        ,
        g.prototype.encode = function(A) {
            try {
                var i = passStringToWasm0(A, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)
                  , g = WASM_VECTOR_LEN;
                return wasm.rsapublickeypair_encode(8, this.UW, i, g),
                getStringFromWasm0(I = getInt32Memory0()[2], t = getInt32Memory0()[3])
            } finally {
                var I = getInt32Memory0()[2]
                  , t = getInt32Memory0()[3];
                wasm.__wbindgen_free(I, t)
            }
        }
        ,
        g
    }();
    function loadSync(A, i) {
        var g = new WebAssembly.Module(A);
        return {
            module: A,
            instance: new WebAssembly.Instance(g,i)
        }
    }
    function initSync(A) {
        var i = {
            wbg: {}
        };
        i.wbg.__wbg_new_59cb74e423758ede = function() {
            return addHeapObject(new Error)
        }
        ,
        i.wbg.__wbg_stack_558ba5917b466edd = function(A, i) {
            var i = passStringToWasm0(getObject(i).stack, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)
              , g = WASM_VECTOR_LEN;
            getInt32Memory0()[A / 4 + 1] = g,
            getInt32Memory0()[A / 4 + 0] = i
        }
        ,
        i.wbg.__wbg_error_4bb6c2a97407129a = function(A, i) {
            try {
                console.error(getStringFromWasm0(A, i))
            } finally {
                wasm.__wbindgen_free(A, i)
            }
        }
        ,
        i.wbg.__wbindgen_object_drop_ref = function(A) {
            takeObject(A)
        }
        ,
        i.wbg.__wbindgen_throw = function(A, i) {
            throw new Error(getStringFromWasm0(A, i))
        }
        ,
        A = loadSync(A, i).instance,
        wasm = A.exports
    }
    var data = "AGFzbQEAAAABaBBgAn9/AGACf38Bf2ADf39/AX9gA39/fwBgAX8AYAF/AX9gBH9/f38AYAAAYAV/f39/fwF/YAF/AX5gBX9/f39/AGAAAX9gBH9/f38Bf2AGf39/f39/AGAHf39/f39/fwF/YAJ+fwF/AqABBQN3YmcaX193YmdfbmV3XzU5Y2I3NGU0MjM3NThlZGUACwN3YmccX193Ymdfc3RhY2tfNTU4YmE1OTE3YjQ2NmVkZAAAA3diZxxfX3diZ19lcnJvcl80YmI2YzJhOTc0MDcxMjlhAAADd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAQDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAAPSAdABAAUECgIAAggEAQEHAgMBAwAIAAQABQYEAAABBQ4DAAMPAwEAAQMACAELAAMGCgAGAwYBAwYBAAMAAAEBAwEBAAUGAAAFBwQBBgoDBAQBCAMDAwEBAwMBAQEBBQAAAQAFAwcAAAEGAAAFAwAAAgwAAwMNAwcAAAAEBAACCwwFBAAFAQABAAADAAAAAAMHAwAFAAAAAAIEBAUEBAMABAQEBQAAAQEBAwYFDAAAAAIBBAEBAwIDAQUFAwAHAQECAQcHAAEAAQEHAAkBBQEFCQkEAAQFAXABS0sFAwEAEQYJAX8BQYCAwAALB7IBCAZtZW1vcnkCABtfX3diZ19yc2FwdWJsaWNrZXlwYWlyX2ZyZWUAngEUcnNhcHVibGlja2V5cGFpcl9uZXcAgAEVcnNhcHVibGlja2V5cGFpcl9pbml0AIMBF3JzYXB1YmxpY2tleXBhaXJfZW5jb2RlADERX193YmluZGdlbl9tYWxsb2MAggESX193YmluZGdlbl9yZWFsbG9jAJkBD19fd2JpbmRnZW5fZnJlZQCwAQmEAQEAQQELStMBaKAB0wHMAdMBN9MBywHLAcsB0wGKAZgB0wFNzwHQAdMB0wFGzQHOAcIB0wGpAdMBtwEpYleGAaMBhgGGAdQB0wGxARNbiAHRAagBmgFppwF8xgGaASgzmwHSAWylAcwBWMABuQFMDr8BtAGyAVLTAdEBES1ewQHIAVzJAQqhtQLQAf05Af0BfyMAQeABayICJAAgAkE4aiABQYABQQBBEEHsk8AAEHYgAkFAayACKAI4IAIoAjwQJiACQTBqIAFBgAFBEEEgQfyTwAAQdiACQdAAaiACKAIwIAIoAjQQJiACQShqIAFBgAFBIEEwQYyUwAAQdiACQeAAaiACKAIoIAIoAiwQJiACQSBqIAFBgAFBMEHAAEGclMAAEHYgAkHwAGogAigCICACKAIkECYgAkEYaiABQYABQcAAQdAAQayUwAAQdiACQYABaiACKAIYIAIoAhwQJiACQRBqIAFBgAFB0ABB4ABBvJTAABB2IAJBkAFqIAIoAhAgAigCFBAmIAJBCGogAUGAAUHgAEHwAEHMlMAAEHYgAkGgAWogAigCCCACKAIMECYgAiABQYABQfAAQYABQdyUwAAQdiACQbABaiACKAIAIAIoAgQQJiACKAJAIQogAigCRCELIAIoAkghDCACKAJMIQ0gAkHYAWoiASACQdgAaiIDKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBARBZIAIoAsABIQ4gAigCxAEhDyACKALIASEQIAIoAswBIREgASACQegAaiIEKQMANwMAIAIgAikDYDcD0AEgAkHAAWogAkHQAWpBAhBZIAIoAsABIRIgAigCxAEhEyACKALIASEUIAIoAswBIRUgASACQfgAaiIFKQMANwMAIAIgAikDcDcD0AEgAkHAAWogAkHQAWpBAxBZIAIoAsABIRYgAigCxAEhFyACKALIASEYIAIoAswBIRkgASACQYgBaiIGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASEaIAIoAsQBIRsgAigCyAEhHCACKALMASEdIAEgAkGYAWoiBykDADcDACACIAIpA5ABNwPQASACQcABaiACQdABakEFEFkgAigCwAEhHiACKALEASEfIAIoAsgBISAgAigCzAEhISABIAJBqAFqIggpAwA3AwAgAiACKQOgATcD0AEgAkHAAWogAkHQAWpBBhBZIAIoAsABISIgAigCxAEhIyACKALIASEkIAIoAswBISUgASACQbgBaiIJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQcQWSACKALAASEmIAIoAsQBIScgAigCyAEhKCACKALMASEpIAEgAikDSDcDACACIAIpA0A3A9ABIAJBwAFqIAJB0AFqQQEQWiACKALAASEqIAIoAsQBISsgAigCyAEhLCACKALMASEtIAMoAgAhLiACKAJQIS8gAigCVCEwIAIoAlwhMSABIAQpAwA3AwAgAiACKQNgNwPQASACQcABaiACQdABakEBEFkgAigCwAEhMiACKALEASEzIAIoAsgBITQgAigCzAEhNSABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakECEFkgAigCwAEhNiACKALEASE3IAIoAsgBITggAigCzAEhOSABIAYpAwA3AwAgAiACKQOAATcD0AEgAkHAAWogAkHQAWpBAxBZIAIoAsABITogAigCxAEhOyACKALIASE8IAIoAswBIT0gASAHKQMANwMAIAIgAikDkAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASE+IAIoAsQBIT8gAigCyAEhQCACKALMASFBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakEFEFkgAigCwAEhQiACKALEASFDIAIoAsgBIUQgAigCzAEhRSABIAkpAwA3AwAgAiACKQOwATcD0AEgAkHAAWogAkHQAWpBBhBZIAIoAsABIUYgAigCxAEhRyACKALIASFIIAIoAswBIUkgASACKQNINwMAIAIgAikDQDcD0AEgAkHAAWogAkHQAWpBAhBaIAIoAsABIUogAigCxAEhSyACKALIASFMIAIoAswBIU0gASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBARBaIAIoAsABIU4gAigCxAEhTyACKALIASFQIAIoAswBIVEgBCgCACFSIAIoAmAhUyACKAJkIVQgAigCbCFVIAEgBSkDADcDACACIAIpA3A3A9ABIAJBwAFqIAJB0AFqQQEQWSACKALAASFWIAIoAsQBIVcgAigCyAEhWCACKALMASFZIAEgBikDADcDACACIAIpA4ABNwPQASACQcABaiACQdABakECEFkgAigCwAEhWiACKALEASFbIAIoAsgBIVwgAigCzAEhXSABIAcpAwA3AwAgAiACKQOQATcD0AEgAkHAAWogAkHQAWpBAxBZIAIoAsABIV4gAigCxAEhXyACKALIASFgIAIoAswBIWEgASAIKQMANwMAIAIgAikDoAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASFiIAIoAsQBIWMgAigCyAEhZCACKALMASFlIAEgCSkDADcDACACIAIpA7ABNwPQASACQcABaiACQdABakEFEFkgAigCwAEhZiACKALEASFnIAIoAsgBIWggAigCzAEhaSABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEDEFogAigCwAEhaiACKALEASFrIAIoAsgBIWwgAigCzAEhbSABIAMpAwA3AwAgAiACKQNQNwPQASACQcABaiACQdABakECEFogAigCwAEhbiACKALEASFvIAIoAsgBIXAgAigCzAEhcSABIAQpAwA3AwAgAiACKQNgNwPQASACQcABaiACQdABakEBEFogAigCwAEhciACKALEASFzIAIoAsgBIXQgAigCzAEhdSAFKAIAIXYgAigCcCF3IAIoAnQheCACKAJ8IXkgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQEQWSACKALAASF6IAIoAsQBIXsgAigCyAEhfCACKALMASF9IAEgBykDADcDACACIAIpA5ABNwPQASACQcABaiACQdABakECEFkgAigCwAEhfiACKALEASF/IAIoAsgBIYABIAIoAswBIYEBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakEDEFkgAigCwAEhggEgAigCxAEhgwEgAigCyAEhhAEgAigCzAEhhQEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASGGASACKALEASGHASACKALIASGIASACKALMASGJASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEEEFogAigCwAEhigEgAigCxAEhiwEgAigCyAEhjAEgAigCzAEhjQEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBAxBaIAIoAsABIY4BIAIoAsQBIY8BIAIoAsgBIZABIAIoAswBIZEBIAEgBCkDADcDACACIAIpA2A3A9ABIAJBwAFqIAJB0AFqQQIQWiACKALAASGSASACKALEASGTASACKALIASGUASACKALMASGVASABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakEBEFogAigCwAEhlgEgAigCxAEhlwEgAigCyAEhmAEgAigCzAEhmQEgBigCACGaASACKAKAASGbASACKAKEASGcASACKAKMASGdASABIAcpAwA3AwAgAiACKQOQATcD0AEgAkHAAWogAkHQAWpBARBZIAIoAsABIZ4BIAIoAsQBIZ8BIAIoAsgBIaABIAIoAswBIaEBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakECEFkgAigCwAEhogEgAigCxAEhowEgAigCyAEhpAEgAigCzAEhpQEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQMQWSACKALAASGmASACKALEASGnASACKALIASGoASACKALMASGpASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEFEFogAigCwAEhqgEgAigCxAEhqwEgAigCyAEhrAEgAigCzAEhrQEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBBBBaIAIoAsABIa4BIAIoAsQBIa8BIAIoAsgBIbABIAIoAswBIbEBIAEgBCkDADcDACACIAIpA2A3A9ABIAJBwAFqIAJB0AFqQQMQWiACKALAASGyASACKALEASGzASACKALIASG0ASACKALMASG1ASABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakECEFogAigCwAEhtgEgAigCxAEhtwEgAigCyAEhuAEgAigCzAEhuQEgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQEQWiACKALAASG6ASACKALEASG7ASACKALIASG8ASACKALMASG9ASAHKAIAIb4BIAIoApABIb8BIAIoApQBIcABIAIoApwBIcEBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakEBEFkgAigCwAEhwgEgAigCxAEhwwEgAigCyAEhxAEgAigCzAEhxQEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQIQWSACKALAASHGASACKALEASHHASACKALIASHIASACKALMASHJASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEGEFogAigCwAEhygEgAigCxAEhywEgAigCyAEhzAEgAigCzAEhzQEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBBRBaIAIoAsABIc4BIAIoAsQBIc8BIAIoAsgBIdABIAIoAswBIdEBIAEgBCkDADcDACACIAIpA2A3A9ABIAJBwAFqIAJB0AFqQQQQWiACKALAASHSASACKALEASHTASACKALIASHUASACKALMASHVASABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakEDEFogAigCwAEh1gEgAigCxAEh1wEgAigCyAEh2AEgAigCzAEh2QEgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQIQWiACKALAASHaASACKALEASHbASACKALIASHcASACKALMASHdASABIAcpAwA3AwAgAiACKQOQATcD0AEgAkHAAWogAkHQAWpBARBaIAIoAsABId4BIAIoAsQBId8BIAIoAsgBIeABIAIoAswBIeEBIAgoAgAh4gEgAigCoAEh4wEgAigCpAEh5AEgAigCrAEh5QEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQEQWSACKALAASHmASACKALEASHnASACKALIASHoASACKALMASHpASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEHEFogAigCwAEh6gEgAigCxAEh6wEgAigCyAEh7AEgAigCzAEh7QEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBBhBaIAIoAsABIQMgAigCxAEh7gEgAigCyAEh7wEgAigCzAEh8AEgASAEKQMANwMAIAIgAikDYDcD0AEgAkHAAWogAkHQAWpBBRBaIAIoAsABIQQgAigCxAEh8QEgAigCyAEh8gEgAigCzAEh8wEgASAFKQMANwMAIAIgAikDcDcD0AEgAkHAAWogAkHQAWpBBBBaIAIoAsABIQUgAigCxAEh9AEgAigCyAEh9QEgAigCzAEh9gEgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQMQWiACKALAASEGIAIoAsQBIfcBIAIoAsgBIfgBIAIoAswBIfkBIAEgBykDADcDACACIAIpA5ABNwPQASACQcABaiACQdABakECEFogAigCwAEhByACKALEASH6ASACKALIASH7ASACKALMASH8ASABIAgpAwA3AwAgAiACKQOgATcD0AEgAkHAAWogAkHQAWpBARBaIAIoAsABIQEgAigCxAEhCCACKALIASH9ASACKALMASH+ASAAQewAaiDpAUGAgYKEeHEg5QFBwICBggRxIOEBQaDAgIECcSDdAUGQoMCAAXEg2QFBiJCgwABxINUBQYSIkCBxINEBQYKEiBBxIM0BQYGChAhxcnJycnJycjYCACAAQegAaiDoAUGAgYKEeHEg4gFBwICBggRxIOABQaDAgIECcSDcAUGQoMCAAXEg2AFBiJCgwABxINQBQYSIkCBxINABQYKEiBBxIMwBQYGChAhxcnJycnJycjYCACAAQeQAaiDnAUGAgYKEeHEg5AFBwICBggRxIN8BQaDAgIECcSDbAUGQoMCAAXEg1wFBiJCgwABxINMBQYSIkCBxIM8BQYKEiBBxIMsBQYGChAhxcnJycnJycjYCACAAIOYBQYCBgoR4cSDjAUHAgIGCBHEg3gFBoMCAgQJxINoBQZCgwIABcSDWAUGIkKDAAHEg0gFBhIiQIHEgzgFBgoSIEHEgygFBgYKECHFycnJycnJyNgJgIABB3ABqIMkBQYCBgoR4cSDFAUHAgIGCBHEgwQFBoMCAgQJxIL0BQZCgwIABcSC5AUGIkKDAAHEgtQFBhIiQIHEgsQFBgoSIEHEgrQFBgYKECHFycnJycnJyNgIAIABB2ABqIMgBQYCBgoR4cSDEAUHAgIGCBHEgvgFBoMCAgQJxILwBQZCgwIABcSC4AUGIkKDAAHEgtAFBhIiQIHEgsAFBgoSIEHEgrAFBgYKECHFycnJycnJyNgIAIABB1ABqIMcBQYCBgoR4cSDDAUHAgIGCBHEgwAFBoMCAgQJxILsBQZCgwIABcSC3AUGIkKDAAHEgswFBhIiQIHEgrwFBgoSIEHEgqwFBgYKECHFycnJycnJyNgIAIAAgxgFBgIGChHhxIMIBQcCAgYIEcSC/AUGgwICBAnEgugFBkKDAgAFxILYBQYiQoMAAcSCyAUGEiJAgcSCuAUGChIgQcSCqAUGBgoQIcXJycnJycnI2AlAgAEHMAGogqQFBgIGChHhxIKUBQcCAgYIEcSChAUGgwICBAnEgnQFBkKDAgAFxIJkBQYiQoMAAcSCVAUGEiJAgcSCRAUGChIgQcSCNAUGBgoQIcXJycnJycnI2AgAgAEHIAGogqAFBgIGChHhxIKQBQcCAgYIEcSCgAUGgwICBAnEgmgFBkKDAgAFxIJgBQYiQoMAAcSCUAUGEiJAgcSCQAUGChIgQcSCMAUGBgoQIcXJycnJycnI2AgAgAEHEAGogpwFBgIGChHhxIKMBQcCAgYIEcSCfAUGgwICBAnEgnAFBkKDAgAFxIJcBQYiQoMAAcSCTAUGEiJAgcSCPAUGChIgQcSCLAUGBgoQIcXJycnJycnI2AgAgACCmAUGAgYKEeHEgogFBwICBggRxIJ4BQaDAgIECcSCbAUGQoMCAAXEglgFBiJCgwABxIJIBQYSIkCBxII4BQYKEiBBxIIoBQYGChAhxcnJycnJycjYCQCAAQTxqIIkBQYCBgoR4cSCFAUHAgIGCBHEggQFBoMCAgQJxIH1BkKDAgAFxIHlBiJCgwABxIHVBhIiQIHEgcUGChIgQcSBtQYGChAhxcnJycnJycjYCACAAQThqIIgBQYCBgoR4cSCEAUHAgIGCBHEggAFBoMCAgQJxIHxBkKDAgAFxIHZBiJCgwABxIHRBhIiQIHEgcEGChIgQcSBsQYGChAhxcnJycnJycjYCACAAQTRqIIcBQYCBgoR4cSCDAUHAgIGCBHEgf0GgwICBAnEge0GQoMCAAXEgeEGIkKDAAHEgc0GEiJAgcSBvQYKEiBBxIGtBgYKECHFycnJycnJyNgIAIAAghgFBgIGChHhxIIIBQcCAgYIEcSB+QaDAgIECcSB6QZCgwIABcSB3QYiQoMAAcSByQYSIkCBxIG5BgoSIEHEgakGBgoQIcXJycnJycnI2AjAgAEEsaiBpQYCBgoR4cSBlQcCAgYIEcSBhQaDAgIECcSBdQZCgwIABcSBZQYiQoMAAcSBVQYSIkCBxIFFBgoSIEHEgTUGBgoQIcXJycnJycnI2AgAgAEEoaiBoQYCBgoR4cSBkQcCAgYIEcSBgQaDAgIECcSBcQZCgwIABcSBYQYiQoMAAcSBSQYSIkCBxIFBBgoSIEHEgTEGBgoQIcXJycnJycnI2AgAgAEEkaiBnQYCBgoR4cSBjQcCAgYIEcSBfQaDAgIECcSBbQZCgwIABcSBXQYiQoMAAcSBUQYSIkCBxIE9BgoSIEHEgS0GBgoQIcXJycnJycnI2AgAgACBmQYCBgoR4cSBiQcCAgYIEcSBeQaDAgIECcSBaQZCgwIABcSBWQYiQoMAAcSBTQYSIkCBxIE5BgoSIEHEgSkGBgoQIcXJycnJycnI2AiAgAEEcaiBJQYCBgoR4cSBFQcCAgYIEcSBBQaDAgIECcSA9QZCgwIABcSA5QYiQoMAAcSA1QYSIkCBxIDFBgoSIEHEgLUGBgoQIcXJycnJycnI2AgAgAEEYaiBIQYCBgoR4cSBEQcCAgYIEcSBAQaDAgIECcSA8QZCgwIABcSA4QYiQoMAAcSA0QYSIkCBxIC5BgoSIEHEgLEGBgoQIcXJycnJycnI2AgAgAEEUaiBHQYCBgoR4cSBDQcCAgYIEcSA/QaDAgIECcSA7QZCgwIABcSA3QYiQoMAAcSAzQYSIkCBxIDBBgoSIEHEgK0GBgoQIcXJycnJycnI2AgAgACBGQYCBgoR4cSBCQcCAgYIEcSA+QaDAgIECcSA6QZCgwIABcSA2QYiQoMAAcSAyQYSIkCBxIC9BgoSIEHEgKkGBgoQIcXJycnJycnI2AhAgACApQYCBgoR4cSAlQcCAgYIEcSAhQaDAgIECcSAdQZCgwIABcSAZQYiQoMAAcSAVQYSIkCBxIBFBgoSIEHEgDUGBgoQIcXJycnJycnI2AgwgACAoQYCBgoR4cSAkQcCAgYIEcSAgQaDAgIECcSAcQZCgwIABcSAYQYiQoMAAcSAUQYSIkCBxIBBBgoSIEHEgDEGBgoQIcXJycnJycnI2AgggACAnQYCBgoR4cSAjQcCAgYIEcSAfQaDAgIECcSAbQZCgwIABcSAXQYiQoMAAcSATQYSIkCBxIA9BgoSIEHEgC0GBgoQIcXJycnJycnI2AgQgACAmQYCBgoR4cSAiQcCAgYIEcSAeQaDAgIECcSAaQZCgwIABcSAWQYiQoMAAcSASQYSIkCBxIA5BgoSIEHEgCkGBgoQIcXJycnJycnI2AgAgAEH8AGogAigCvAFBgIGChHhxIP4BQcCAgYIEcSD8AUGgwICBAnEg+QFBkKDAgAFxIPYBQYiQoMAAcSDzAUGEiJAgcSDwAUGChIgQcSDtAUGBgoQIcXJycnJycnI2AgAgAEH4AGogCSgCAEGAgYKEeHEg/QFBwICBggRxIPsBQaDAgIECcSD4AUGQoMCAAXEg9QFBiJCgwABxIPIBQYSIkCBxIO8BQYKEiBBxIOwBQYGChAhxcnJycnJycjYCACAAQfQAaiACKAK0AUGAgYKEeHEgCEHAgIGCBHEg+gFBoMCAgQJxIPcBQZCgwIABcSD0AUGIkKDAAHEg8QFBhIiQIHEg7gFBgoSIEHEg6wFBgYKECHFycnJycnJyNgIAIAAgAigCsAFBgIGChHhxIAFBwICBggRxIAdBoMCAgQJxIAZBkKDAgAFxIAVBiJCgwABxIARBhIiQIHEgA0GChIgQcSDqAUGBgoQIcXJycnJycnI2AnAgAkHgAWokAAulCgILfwF+IwBBIGsiBiQAQQEhCAJAAkAgACgCGEEiIABBHGooAgAoAhARAQANAEH0n8AAIQQDQAJAIAQhCiAEQQFqIQMCQAJ/IAQsAAAiBUF/TARAAn8gA0GNoMAARgRAQQAhAUGNoMAADAELIAQtAAFBP3EhASAEQQJqIgMLIQQgASAFQR9xIglBBnRyIAVB/wFxIgtB3wFNDQEaAn8gBEGNoMAARgRAQQAhCEGNoMAADAELIAQtAABBP3EhCCAEQQFqIgMLIQUgCCABQQZ0ciIBIAlBDHRyIAtB8AFJDQEaAn8gBUGNoMAARgRAIAMhBEEADAELIAVBAWohBCAFLQAAQT9xCyAJQRJ0QYCA8ABxIAFBBnRyciIBQYCAxABHDQIMAwsgBUH/AXELIQEgAyEEC0ECIQMCQAJAAkACQCABQXdqIglBHksEQCABQdwARw0BDAILQfQAIQUCQAJAIAlBAWsOHgECAgACAgICAgICAgICAgICAgICAgICAgMCAgICAwQLQfIAIQUMAwtB7gAhBQwCCwJAIAEQGg0AAkAgAUGAgARPBEAgAUGAgAhJDQEgAUGQ/EdqQZD8C0kgAUG12XNqQbXbK0lyIAFB4ot0akHiC0kgAUGfqHRqQZ8YSXJyIAFB/v//AHFBnvAKRiABQd7idGpBDklyIAFBorJ1akEiSSABQcuRdWpBCk1ycnINAgwFCyABQdiswABBKUGqrcAAQaICQcyvwABBtQIQIUUNAQwECyABQYGywABBJkHNssAAQa8BQfyzwABBowMQIQ0DCyABQQFyZ0ECdkEHc61CgICAgNAAhCEMQQMhAwsgASEFCyAGQRk2AgQgBkH0n8AANgIAIAYgAjYCCCAGIAc2AgwCQAJAIAcgAkkNACACRSACQRlGckUEQCACQRlPDQEgAkH0n8AAaiwAAEG/f0wNAQsgB0UgB0EZRnJFBEAgB0EZTw0BIAdB9J/AAGosAABBv39MDQELIAAoAhggAkH0n8AAaiAHIAJrIAAoAhwoAgwRAgBFDQFBASEIDAULIAYgBkEMajYCGCAGIAZBCGo2AhQgBiAGNgIQIAZBEGoQnQEACwNAIAMhCUEBIQhB3AAhAkEBIQMCQAJ+AkACQAJAAkAgCUEBaw4DAQUAAgsCQAJAAkACQCAMQiCIp0H/AXFBAWsOBQMCAQAGBQsgDEL/////j2CDQoCAgIAwhCEMQQMhA0H1ACECDAcLIAxC/////49gg0KAgICAIIQhDEEDIQNB+wAhAgwGCyAFIAynIglBAnRBHHF2QQ9xIgNBMHIgA0HXAGogA0EKSRshAiAMQn98Qv////8PgyAMQoCAgIBwg4QgCQ0EGiAMQv////+PYINCgICAgBCEDAQLIAxC/////49ggyEMQQMhA0H9ACECDAQLQQAhAyAFIQIMAwsCf0EBIAFBgAFJDQAaQQIgAUGAEEkNABpBA0EEIAFBgIAESRsLIAdqIQIMBAsgDEL/////j2CDQoCAgIDAAIQLIQxBAyEDCyAAKAIYIAIgACgCHCgCEBEBAEUNAAsMAwsgByAKayAEaiEHIARBjaDAAEcNAQsLIAJFIAJBGUZyRQRAIAJBGU8NAiACQfSfwABqLAAAQb9/TA0CC0EBIQggACgCGCACQfSfwABqQRkgAmsgACgCHCgCDBECAA0AIAAoAhhBIiAAKAIcKAIQEQEAIQgLIAZBIGokACAIDwtB9J/AAEEZIAJBGUGoqsAAEAgAC/8IARJ/IwBB0MMAayIBJAAQeCABQSBqQQgQayABQRhqIAFBIGoQrwEgAUEwaiABKAIYIAEoAhwQOCABQUBrIAFBMGoQZyABQZAdaiABQUBrEAogAUGwGWogAUGQHWpBsAEQfxogAUHgGmogAUHAHmpBsAEQfxogAUGQHGpBgAEQlgEDQCACQbABRwRAIAFB8DVqIAJqIgRCADcBACAEQQhqQgA3AQAgAkEQaiECDAELC0EAIQIDQCACQbABRwRAIAFBoDdqIAJqIgRCADcBACAEQQhqQgA3AQAgAkEQaiECDAELCyABQZAdaiABQZAcakGAARB/GkEAIQIDQCACQYALRwRAIAFB0DhqIAJqIAFBkB1qQYABEH8aIAJBgAFqIQIMAQsLIAFBkB1qIAFBkBxqQYABEH8aQQAhAgNAIAJBgAtHBEAgAUHQAGogAmogAUGQHWpBgAEQfxogAkGAAWohAgwBCwsgAUGQM2ogAUHwNWpBsAEQfxogAUHANGogAUGgN2pBsAEQfxogAUGQHWogAUHQOGpBgAsQfxogAUGQKGogAUHQAGpBgAsQfxogAUEQakEAQQsQuAEgASABKQMQNwPQOAJAA0AgAUEIaiABQdA4ahBzIAEoAghFDQEgASgCDCILQQpNBEAgC0EEdCIFIAFBsBlqaiICKAIAIgQgAigCBCIIIAIoAggiCSACKAIMIgpBABAsIQYgBCAIIAkgCkEBECwhByAEIAggCSAKQQIQLCEDIAQgCCAJIApBAxAsIQwgBCAIIAkgCkEEECwhDSAEIAggCSAKQQUQLCEOIAQgCCAJIApBBhAsIQ8gAUGQHWogBWoiAkGOFmogBCAIIAkgCkEHECw7AQAgAkGMFmogDzsBACACQYoWaiAOOwEAIAJBiBZqIA07AQAgAkGGFmogDDsBACACQYQWaiADOwEAIAJBghZqIAc7AQAgAkGAFmogBjsBACABQeAaaiAFaiIDKAIAIgUgAygCBCIGIAMoAggiByADKAIMIgNBABAsIQwgBSAGIAcgA0EBECwhDSAFIAYgByADQQIQLCEOIAUgBiAHIANBAxAsIQ8gBSAGIAcgA0EEECwhECAFIAYgByADQQUQLCERIAUgBiAHIANBBhAsIRIgAkG+F2ogBSAGIAcgA0EHECw7AQAgAkG8F2ogEjsBACACQboXaiAROwEAIAJBuBdqIBA7AQAgAkG2F2ogDzsBACACQbQXaiAOOwEAIAJBshdqIA07AQAgAkGwF2ogDDsBACABQdAAaiAEIAggCSAKEDIgAUGQHWogC0EHdGogAUHQAGpBgAEQfyABQdAAaiAFIAYgByADEDJBgAtqIAFB0ABqQYABEH8aDAELCyALQQtBgIPAABBUAAsgAUHQAGogAUGQHWpB4BgQfxogAUGYHWoiAiABQShqKAIANgIAIAEgASkDIDcDkB0gABChASAAQQhqIAIoAgA2AgAgACABKQOQHTcCACAAQQE2AgwgAEEQaiABQdAAakHgGBB/GiABQdDDAGokAAuUCAEGfyMAQfAAayIFJAAgBSADNgIMIAUgAjYCCEEBIQkgASEHAkAgAUGBAkkNAEEAIAFrIQhBgAIhBgNAAkAgBiABTw0AIAAgBmosAABBv39MDQBBACEJIAYhBwwCCyAGQX9qIQdBACEJIAZBAUYNASAGIAhqIAchBkEBRw0ACwsgBSAHNgIUIAUgADYCECAFQQBBBSAJGzYCHCAFQbijwABBuKrAACAJGzYCGAJAAkACQAJAIAIgAUsiBiADIAFLckUEQCACIANLDQECQCACRSABIAJGckUEQCABIAJNDQEgACACaiwAAEFASA0BCyADIQILIAUgAjYCICACRSABIAJGcg0CIAFBAWohAwNAIAIgAUkEQCAAIAJqLAAAQUBODQQLIAJBf2ohBiACQQFGDQQgAiADRiAGIQJFDQALDAMLIAUgAiADIAYbNgIoIAVBxABqQQM2AgAgBUHcAGpBOzYCACAFQdQAakE7NgIAIAVCAzcCNCAFQeCqwAA2AjAgBUE6NgJMIAUgBUHIAGo2AkAgBSAFQRhqNgJYIAUgBUEQajYCUCAFIAVBKGo2AkgMAwsgBUHkAGpBOzYCACAFQdwAakE7NgIAIAVB1ABqQTo2AgAgBUHEAGpBBDYCACAFQgQ3AjQgBUGcq8AANgIwIAVBOjYCTCAFIAVByABqNgJAIAUgBUEYajYCYCAFIAVBEGo2AlggBSAFQQxqNgJQIAUgBUEIajYCSAwCCyACIQYLAkAgASAGRg0AQQEhBwJAAkACQCAAIAZqIggsAAAiAkF/TARAQQAhCSAAIAFqIgMhASADIAhBAWpHBEAgCC0AAUE/cSEJIAhBAmohAQsgAkEfcSEIIAJB/wFxQd8BSw0BIAkgCEEGdHIhAQwCCyAFIAJB/wFxNgIkIAVBKGohAgwCC0EAIQAgAyEHIAEgA0cEfyABQQFqIQcgAS0AAEE/cQUgAAsgCUEGdHIhACACQf8BcUHwAUkEQCAAIAhBDHRyIQEMAQtBACECIAMgB0cEfyAHLQAAQT9xBSACCyAIQRJ0QYCA8ABxIABBBnRyciIBQYCAxABGDQILIAUgATYCJEEBIQcgBUEoaiECIAFBgAFJDQBBAiEHIAFBgBBJDQBBA0EEIAFBgIAESRshBwsgBSAGNgIoIAUgBiAHajYCLCAFQcQAakEFNgIAIAVB7ABqQTs2AgAgBUHkAGpBOzYCACAFQdwAakE8NgIAIAVB1ABqQT02AgAgBUIFNwI0IAVB8KvAADYCMCAFIAI2AlggBUE6NgJMIAUgBUHIAGo2AkAgBSAFQRhqNgJoIAUgBUEQajYCYCAFIAVBJGo2AlAgBSAFQSBqNgJIDAELQd2jwABBKyAEEHcACyAFQTBqIAQQkwEAC8gGAQx/IABBEGooAgAhAwJAAkACQAJAIABBCGooAgAiDUEBRwRAIANBAUYNASAAKAIYIAEgAiAAQRxqKAIAKAIMEQIAIQMMAwsgA0EBRw0BCwJAIAJFBEBBACECDAELIAEgAmohByAAQRRqKAIAQQFqIQogASIDIQsDQCADQQFqIQUCQAJ/IAMsAAAiBEF/TARAAn8gBSAHRgRAQQAhCCAHDAELIAMtAAFBP3EhCCADQQJqIgULIQMgBEEfcSEJIAggCUEGdHIgBEH/AXEiDkHfAU0NARoCfyADIAdGBEBBACEMIAcMAQsgAy0AAEE/cSEMIANBAWoiBQshBCAMIAhBBnRyIQggCCAJQQx0ciAOQfABSQ0BGgJ/IAQgB0YEQCAFIQNBAAwBCyAEQQFqIQMgBC0AAEE/cQsgCUESdEGAgPAAcSAIQQZ0cnIiBEGAgMQARw0CDAQLIARB/wFxCyEEIAUhAwsgCkF/aiIKBEAgBiALayADaiEGIAMhCyADIAdHDQEMAgsLIARBgIDEAEYNAAJAIAZFIAIgBkZyRQRAQQAhAyAGIAJPDQEgASAGaiwAAEFASA0BCyABIQMLIAYgAiADGyECIAMgASADGyEBCyANQQFGDQAMAgtBACEFIAIEQCACIQQgASEDA0AgBSADLQAAQcABcUGAAUZqIQUgA0EBaiEDIARBf2oiBA0ACwsgAiAFayAAKAIMIgdPDQFBACEGQQAhBSACBEAgAiEEIAEhAwNAIAUgAy0AAEHAAXFBgAFGaiEFIANBAWohAyAEQX9qIgQNAAsLIAUgAmsgB2oiAyEEAkACQAJAQQAgAC0AICIFIAVBA0YbQQFrDgMBAAECCyADQQF2IQYgA0EBakEBdiEEDAELQQAhBCADIQYLIAZBAWohAwJAA0AgA0F/aiIDRQ0BIAAoAhggACgCBCAAKAIcKAIQEQEARQ0AC0EBDwsgACgCBCEFQQEhAyAAKAIYIAEgAiAAKAIcKAIMEQIADQAgBEEBaiEDIAAoAhwhASAAKAIYIQADQCADQX9qIgNFBEBBAA8LIAAgBSABKAIQEQEARQ0AC0EBDwsgAw8LIAAoAhggASACIABBHGooAgAoAgwRAgAL7gYBB38jAEGwA2siAiQAIAJBQGsQUCACQThqQQBBBBC4ASACIAIpAzg3A/ABAkACQAJAAkADQCACQTBqIAJB8AFqEHMgAigCMEUEQCACQShqQQRBLBC4ASACIAIpAyg3A/ABAkACQAJAAkACQAJAA0ACQCACQSBqIAJB8AFqEHMgAigCIEUEQCACQfABahBQIAJB+AFqIAJByABqKQMANwMAIAIgAikDQDcD8AEgAkEYakEBQQoQuAEgAiACKQMYNwOgAwNAIAJBEGogAkGgA2oQcyACKAIQRQ0CIAIoAhQhASACQQhqQQBBBBC4ASACIAIpAwg3A6gDA0AgAiACQagDahBzIAIoAgBFDQEgAUEKSw0JIAIoAgQiA0EDSw0KIANBAnQiAyABQQR0IgQgAkHwAWpqaiACQUBrIARqIANqKAIAEEk2AgAMAAsACwALIAIoAiQiA0F/aiIBQQJ2IQQgAUErSw0CIAJBQGsgBEEEdGogAUEDcUECdGooAgAhASADQQNxIgdFBEAgAUEYdxCFASEEIANBAnZBP3FBf2oiAUEJSw0EIAFBAnRBnJDAAGooAgAgBHMhAQsgA0F8aiIEQQJ2IQUgBEErSw0EIANBAnYhBiADQStLDQUgAkFAayAGQQR0aiAHQQJ0aiACQUBrIAVBBHRqIARBA3FBAnRqKAIAIAFzNgIADAELCyACQZgDaiACQegBaikDADcDACACIAIpA+ABNwOQAyAAIAJBQGtBsAEQf0GwAWogAkHwAWpBsAEQfxogAkGwA2okAA8LIARBC0G4hcAAEFQACyABQQpByIXAABBUAAsgBUELQdiFwAAQVAALIAZBC0HohcAAEFQACyABQQtB+IXAABBUAAsgA0EEQfiFwAAQVAALIAIoAjRBAnQiBEEPTQRAIARBAXIiBUEPSw0CIARBAnIiBkEPSw0DIARBA3IiB0EPSw0EIANBAnYhCCADQSxGDQUgAkFAayAIQQR0aiADQQNxQQJ0aiABIARqLQAAIAEgBWotAABBCHRyIAEgBmotAABBEHRyIAEgB2otAABBGHRyNgIAIANBAWohAwwBCwsgBEEQQeiEwAAQVAALIAVBEEH4hMAAEFQACyAGQRBBiIXAABBUAAsgB0EQQZiFwAAQVAALIAhBC0GohcAAEFQAC5wGAQp/IwBBMGsiBCQAIARBJGogATYCACAEQQM6ACggBEKAgICAgAQ3AwggBCAANgIgIARBADYCGCAEQQA2AhACQAJAAkAgAigCCCIFBEAgAigCACEHIAIoAgQiCSACQQxqKAIAIgMgAyAJSxsiC0UNASACQRRqKAIAIQggAigCECEKQQEhAyAAIAcoAgAgBygCBCABKAIMEQIADQMgB0EMaiECQQEhBgJAAkADQCAEIAVBBGooAgA2AgwgBCAFQRxqLQAAOgAoIAQgBUEIaigCADYCCCAFQRhqKAIAIQNBACEBQQAhAAJAAkACQCAFQRRqKAIAQQFrDgIAAgELIAMgCE8NAyADQQN0IApqIgwoAgRBPkcNASAMKAIAKAIAIQMLQQEhAAsgBCADNgIUIAQgADYCECAFQRBqKAIAIQMCQAJAAkAgBUEMaigCAEEBaw4CAAIBCyADIAhPDQQgA0EDdCAKaiIAKAIEQT5HDQEgACgCACgCACEDC0EBIQELIAQgAzYCHCAEIAE2AhggBSgCACIAIAhJBEAgCiAAQQN0aiIAKAIAIARBCGogACgCBBEBAA0GIAYgC08NBSACQXxqIQAgAigCACEBIAJBCGohAiAFQSBqIQVBASEDIAZBAWohBiAEKAIgIAAoAgAgASAEKAIkKAIMEQIARQ0BDAcLCyAAIAhBiKjAABBUAAsgAyAIQZiowAAQVAALIAMgCEGYqMAAEFQACyACKAIAIQcgAigCBCIJIAJBFGooAgAiAyADIAlLGyIIRQ0AIAIoAhAhBUEBIQMgACAHKAIAIAcoAgQgASgCDBECAA0CIAdBDGohAkEBIQYDQCAFKAIAIARBCGogBUEEaigCABEBAA0CIAYgCE8NASACQXxqIQAgAigCACEBIAJBCGohAiAFQQhqIQUgBkEBaiEGIAQoAiAgACgCACABIAQoAiQoAgwRAgBFDQALDAILIAkgBksEQEEBIQMgBCgCICAHIAZBA3RqIgAoAgAgACgCBCAEKAIkKAIMEQIADQILQQAhAwwBC0EBIQMLIARBMGokACADC8wFAQd/QStBgIDEACAAKAIAIglBAXEiBRshCiAEIAVqIQgCQCAJQQRxRQRAQQAhAQwBCyACBEAgAiEGIAEhBQNAIAcgBS0AAEHAAXFBgAFGaiEHIAVBAWohBSAGQX9qIgYNAAsLIAIgCGogB2shCAtBASEFAkAgACgCCEEBRwRAIAAgCiABIAIQcg0BIAAoAhggAyAEIABBHGooAgAoAgwRAgAhBQwBCyAAQQxqKAIAIgYgCE0EQCAAIAogASACEHINASAAKAIYIAMgBCAAQRxqKAIAKAIMEQIADwsCQCAJQQhxRQRAQQAhBSAGIAhrIgYhCAJAAkACQEEBIAAtACAiByAHQQNGG0EBaw4DAQABAgsgBkEBdiEFIAZBAWpBAXYhCAwBC0EAIQggBiEFCyAFQQFqIQUDQCAFQX9qIgVFDQIgACgCGCAAKAIEIAAoAhwoAhARAQBFDQALQQEPCyAAKAIEIQkgAEEwNgIEIAAtACAhCyAAQQE6ACAgACAKIAEgAhByDQFBACEFIAYgCGsiASECAkACQAJAQQEgAC0AICIGIAZBA0YbQQFrDgMBAAECCyABQQF2IQUgAUEBakEBdiECDAELQQAhAiABIQULIAVBAWohBQJAA0AgBUF/aiIFRQ0BIAAoAhggACgCBCAAKAIcKAIQEQEARQ0AC0EBDwsgACgCBCEBQQEhBSAAKAIYIAMgBCAAKAIcKAIMEQIADQEgAkEBaiEHIAAoAhwhAiAAKAIYIQMDQCAHQX9qIgcEQCADIAEgAigCEBEBAEUNAQwDCwsgACALOgAgIAAgCTYCBEEADwsgACgCBCEGQQEhBSAAIAogASACEHINACAAKAIYIAMgBCAAKAIcKAIMEQIADQAgCEEBaiEHIAAoAhwhASAAKAIYIQADQCAHQX9qIgdFBEBBAA8LIAAgBiABKAIQEQEARQ0ACwsgBQuuAwEFfyMAQRBrIgIkACACQQJyIQRB1MbAACgCACEBAkACQANAAkACQCABQQNLDQACQAJAIAFBAWsOAwACBQELQZifwABBKkHEn8AAEJIBAAtB1MbAAEHUxsAAKAIAIgFBAiABGzYCACABDQIMAQsgAUEDcUECRw0DAkACQANAQYjHwAAoAgBBAUcEQEGIx8AAQgE3AgBBkMfAAEEANgIACyABIQMQLiEFQdTGwAAgBEHUxsAAKAIAIgEgASADRhs2AgAgAkEAOgAIIAIgBTYCACACIANBfHE2AgQCQCABIANGBEAgAi0ACEUNAQwDCwJAIAIoAgAiA0UNACADIAMoAgAiA0F/ajYCACADQQFHDQAgAhBRCyABQQNxQQJGDQEMAwsLA0AQECACLQAIRQ0ACwsgAigCACIBRQ0AIAEgASgCACIBQX9qNgIAIAFBAUcNACACEFFB1MbAACgCACEBDAILQdTGwAAoAgAhAQwBCwsgAkHUxsAANgIAIABBAEGQiMAAKAIAEQAAIAJBAzYCBCACEBgLIAJBEGokAA8LQc+ewABBOUGIn8AAEJIBAAu5BQIEfwF+QQEgASgCGEEnIAFBHGooAgAoAhARAQBFBEBBAiECAkACQAJAIAAoAgAiAEF3aiIEQR5LBEAgAEHcAEcNAQwCC0H0ACEDAkACQCAEQQFrDh4BAgIAAgICAgICAgICAgICAgICAgICAgIDAgICAgMEC0HyACEDDAMLQe4AIQMMAgsCQAJ+IAAQGkUEQAJAAkAgAEGAgARPBEAgAEGAgAhJDQEgAEGQ/EdqQZD8C0kgAEG12XNqQbXbK0lyIABB4ot0akHiC0kgAEGfqHRqQZ8YSXJyIABB/v//AHFBnvAKRiAAQd7idGpBDklyIABBorJ1akEiSXJyDQIgAEHLkXVqQQpLDQUMAgsgAEHYrMAAQSlBqq3AAEGiAkHMr8AAQbUCECFFDQEMBAsgAEGBssAAQSZBzbLAAEGvAUH8s8AAQaMDECENAwsgAEEBcmdBAnZBB3OtQoCAgIDQAIQMAQsgAEEBcmdBAnZBB3OtQoCAgIDQAIQLIQZBAyECDAELQQEhAgsgACEDCwNAIAIhBEHcACEAQQEhAgJAAn4CQAJAAkACQCAEQQFrDgMBBQACCwJAAkACQAJAIAZCIIinQf8BcUEBaw4FAwIBAAYFC0H1ACEAIAZC/////49gg0KAgICAMIQMBgtB+wAhACAGQv////+PYINCgICAgCCEDAULIAMgBqciAkECdEEccXZBD3EiAEEwciAAQdcAaiAAQQpJGyEAIAZCf3xC/////w+DIAZCgICAgHCDhCACDQQaIAZC/////49gg0KAgICAEIQMBAtB/QAhACAGQv////+PYIMMAwtBACECIAMhAAwDCyABKAIYQScgASgCHCgCEBEBAA8LIAZC/////49gg0KAgICAwACECyEGQQMhAgsgASgCGCAAIAEoAhwoAhARAQBFDQALCwvPAwEJfyAALwEAIgQgAUEMakEPcSIDdkEBcUEYdCAEIAFBCGpBD3EiAnZBAXFBEHRyIAAvAQIiBSACdkEBcUERdHIgBSADdkEBcUEZdHIgAC8BBCIGIAJ2QQFxQRJ0ciAGIAN2QQFxQRp0ciAALwEGIgcgAnZBAXFBE3RyIAcgA3ZBAXFBG3RyIAAvAQgiCCACdkEBcUEUdHIgCCADdkEBcUEcdHIgAC8BCiIJIAJ2QQFxQRV0ciAJIAN2QQFxQR10ciAALwEMIgogAnZBAXFBFnRyIAogA3ZBAXFBHnRyIAAvAQ4iACADdkEfdHIgACACdkEBcUEXdHIgBCABQQRqQQ9xIgJ2QQh0QYACcSAEIAFBD3EiAXZBAXFyIAUgAXZBAXRBAnFyIAUgAnZBCXRBgARxciAGIAF2QQJ0QQRxciAGIAJ2QQp0QYAIcXIgByABdkEDdEEIcXIgByACdkELdEGAEHFyIAggAXZBBHRBEHFyIAggAnZBDHRBgCBxciAJIAF2QQV0QSBxciAJIAJ2QQ10QYDAAHFyIAogAXZBBnRBwABxciAKIAJ2QQ50QYCAAXFyIAAgAnZBD3RyIAAgAXZBB3RBgAFxckH//wNxcgv2BAEGfyMAQeAAayIAJABBiMfAACgCAEEBRwRAQYjHwABCATcCAEGQx8AAQQA2AgALEC4iAUEAIAEoAhgiAiACQQJGIgIbNgIYIAAgATYCCAJAIAINAAJAAkACQCAAKAIIIgFBHGoiBCgCACICLQAARQRAIAJBAToAAEEAIQICQEGYx8AAKAIAQQFGBEBBnMfAACgCACECDAELQZjHwABCATcDAAtBnMfAACACNgIAIAEtACANASABIAEoAhgiA0EBIAMbNgIYIANFBEAgACgCCEEkaiAEKAIAEIwBQeihwABBHUGkosAAEJIBAAsgA0ECRw0CIAAoAggiBSgCGCEDIAVBADYCGCAAIAM2AgwgA0ECRw0DAkAgAg0AQZjHwAAoAgBBAUcEQEGYx8AAQgE3AwAMAQtBnMfAACgCAEUNACABQQE6ACALIAQoAgBBADoAAAwEC0G0osAAQSBB8KLAABCSAQALIAAgBDYCSCAAIAJBAEc6AExBiJrAAEErIABByABqQbSawABBkJvAABBOAAtBoJvAAEEXQbibwAAQkgEACyAAQTxqQR82AgAgAEE0akEjNgIAIABBJGpBAzYCACAAIABBDGo2AkAgAEHIm8AANgJEIABB3ABqQQA2AgAgAEIDNwIUIABBlJnAADYCECAAQSM2AiwgAEGAmcAANgJYIABCATcCTCAAQeybwAA2AkggACAAQShqNgIgIAAgAEHIAGo2AjggACAAQcQAajYCMCAAIABBQGs2AiggAEEQakH0m8AAEI0BAAsgACgCCCIBIAEoAgAiAUF/ajYCACABQQFGBEAgAEEIahBRCyAAQeAAaiQAC5IEAQd/IwBBMGsiAyQAAn9BACACRQ0AGiADQShqIQgCQAJAAkACQANAIAAoAggtAAAEQCAAKAIAQcylwABBBCAAKAIEKAIMEQIADQULIANBCjYCKCADQoqAgIAQNwMgIAMgAjYCHCADQQA2AhggAyACNgIUIAMgATYCECADQQhqQQogASACEBsCfwJAAkAgAygCCEEBRgRAIAMoAgwhBANAIAMgBCADKAIYakEBaiIENgIYAkAgBCADKAIkIgVJBEAgAygCFCEHDAELIAMoAhQiByAESQ0AIAVBBU8NByAEIAVrIgYgAygCEGoiCSAIRg0EIAkgCCAFEHFFDQQLIAMoAhwiBiAESSAHIAZJcg0CIAMgAyAFakEnai0AACADKAIQIARqIAYgBGsQGyADKAIEIQQgAygCAEEBRg0ACwsgAyADKAIcNgIYCyAAKAIIQQA6AAAgAgwBCyAAKAIIQQE6AAAgBkEBagshBCAAKAIEIQUgACgCACAERSACIARGciIGRQRAIAIgBE0NAyABIARqLAAAQb9/TA0DCyABIAQgBSgCDBECAA0EIAZFBEAgAiAETQ0EIAEgBGosAABBv39MDQQLIAEgBGohASACIARrIgINAAtBAAwECyAFQQRB4KnAABBVAAsgASACQQAgBEGYqsAAEAgACyABIAIgBCACQaiqwAAQCAALQQELIANBMGokAAvQAwIFfwF+IwBBQGoiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAgBBAWsOAgIAAQsgAigCBCIEIAJBCGooAgBqIgIgBE8NAiADQShqIAJBABC4ASADKQMoIQggAEEBNgIAIAAgCDcCBAwKCyABKAIEIgIEQCACQQF0IQIMAgtBBCECDAILIAIoAgQiBCACQQhqKAIAaiICIARJDQIgASgCBEEBdCIEIAIgBCACSxshAgsgAkEASA0CCyADQTBqIAEQhwEgAygCMCIGDQIgA0EIaiACQQEQdSADKAII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QbABEH8aIAFBwAFqJAALcAECfwJAIAAoAgAiAUEQaigCACICRQ0AIAJBADoAACABQRRqKAIAIgJFDQAgASgCECACQQEQvAELIAFBHGooAgBBAUEBELwBIAAoAgAiASABKAIEIgFBf2o2AgQgAUEBRgRAIAAoAgBBMEEIELwBCwtbAQJ/IwBBIGsiAiQAIAFBHGooAgAhAyABKAIYIAJBGGogACgCACIAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqEAsgAkEgaiQAC2sBAn8jAEEQayIGJAACQCAAIAEgAiADIAQQFiIFDQAgBkEIaiADIAAgASAEKAIMEQYAQQAhBSAGKAIIDQAgBigCDCIFIAIoAgA2AgggAiAFNgIAIAAgASACIAMgBBAWIQULIAZBEGokACAFC20BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakE6NgIAIANCAjcCDCADQaSlwAA2AgggA0E6NgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCTAQALbQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQTo2AgAgA0ICNwIMIANBgKnAADYCCCADQTo2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEJMBAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBOjYCACADQgI3AgwgA0G0qcAANgIIIANBOjYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQkwEAC1YBAn8jAEEgayICJAAgAUEcaigCACEDIAEoAhggAkEYaiAAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqEAsgAkEgaiQAC1sBAn8jAEEQayICJAAgACgCACIAKAIIIQMgACgCACEAIAIgARCVASADBEADQCACIAA2AgwgAiACQQxqECsgAEEBaiEAIANBf2oiAw0ACwsgAhCUASACQRBqJAALXQEDfyAAIAEoAgAiBCACQR9xIgN0NgIAIAAgASgCDCADdCABKAIIIgVBACACa0EfcSICdnI2AgwgACAFIAN0IAEoAgQiASACdnI2AgggACABIAN0IAQgAnZyNgIEC10BAn8gACABKAIMIgMgAkEfcSIEdjYCDCAAIANBACACa0EfcSICdCABKAIIIgMgBHZyNgIIIAAgAyACdCABKAIEIgMgBHZyNgIEIAAgAyACdCABKAIAIAR2cjYCAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQZyWwAAgAkEIahALIAJBIGokAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdinwAAgAkEIahALIAJBIGokAAtWAQF/IwBBIGsiAiQAIAIgADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQeSLwAAgAkEIahALIAJBIGokAAtWAQF/IwBBIGsiAiQAIAIgADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdinwAAgAkEIahALIAJBIGokAAtrAQN/IAAoAgwhASAAQYCAxAA2AgwCQCABQYCAxABHDQBBgIDEACEBIAAoAgAiAiAAKAIERg0AIAAgAkEBajYCACAAKAIIIgMgAi0AACICQQR2ai0AACEBIAAgAyACQQ9xai0AADYCDAsgAQtSAQF/IwBBQGoiAiQAIAIgARBHIAJBEGogAhAVIAJBIGogAkEQahBIIAJBOGogAkEoaikDADcDACACIAIpAyA3AzAgACACQTBqEHAgAkFAayQAC1wBAX8jAEEgayICJAAgAkEANgIIIAJCATcDACACQRhqIAFBCGopAgA3AwAgAiABKQIANwMQIAIgAkEQahAdIABBCGogAigCCDYCACAAIAIpAwA3AgAgAkEgaiQAC0oBAX8jAEEgayICJAAgACgCACACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQhqEF0gAkEgaiQAC1gBAX8jAEGAGWsiAiQAIAFFBEAQwwEACyACIAEQlwEgAigCBEEANgIAIAJBCGogAUH0GBB/GiAAIAJBCGpBBHJB8BgQfxogAUH0GEEEELwBIAJBgBlqJAALTAEBfyAAQQF0QYBAcSAAQQJ0QYAYcSAAQQN0QYABcSAAQf//A3EiAUEBdkHwAHEgAEEPcXJyIAFBAnZBgAZxcnIgAUEDdkGAIHFycgtTAQF/IwBBIGsiAyQAIANBCGogAUEIaikBADcDACADIAEpAQA3AwAgA0EYaiACQQhqKQEANwMAIAMgAikBADcDECAAIAMgA0EQahBPIANBIGokAAtiAQF/IwBBMGsiACQAIABBKjYCDCAAQYSBwAA2AgggAEEkakEBNgIAIABCATcCFCAAQYikwAA2AhAgAEE7NgIsIAAgAEEoajYCICAAIABBCGo2AiggAEEQakGQgsAAEJMBAAtKAQF/IwBBIGsiAiQAIAJBCGogASABQRBqECQgAi0ACEEBRwRAEGYACyAAIAIpAAk3AAAgAEEIaiACQRFqKQAANwAAIAJBIGokAAtWAQJ/IAEoAgAhAiABQQA2AgACQCACBEAgASgCBCEDQQhBBBC1ASIBRQ0BIAEgAzYCBCABIAI2AgAgAEGchsAANgIEIAAgATYCAA8LAAtBCEEEEMcBAAtMAQF/IwBBEGsiAiQAIAIgARCJASACIAA2AgwgAiACQQxqQeiawAAQKiACIABBBGo2AgwgAiACQQxqQdihwAAQKiACEEUgAkEQaiQAC04BAX8jAEEQayIEJAACQCABKAIEIAJrIANPBEAgAEEANgIADAELIARBCGogAzYCACAEIAI2AgQgBEEBNgIAIAAgASAEEBILIARBEGokAAtUAQF/IwBBIGsiAiQAIAJBCGogARAvIAJBADYCGCACIAIpAwg3AxAgAkEQakG8g8AAIAEQtgEgAEEIaiACKAIYNgIAIAAgAikDEDcCACACQSBqJAALVgECfyABKAIAIQIgAUEANgIAAkAgAgRAIAEoAgQhA0EIQQQQtQEiAUUNASABIAM2AgQgASACNgIAIABBwKHAADYCBCAAIAE2AgAPCwALQQhBBBDHAQALTgEBfyMAQfAYayIBJAAgASAAQfAYEH8hAUH0GEEEELUBIgBFBEBB9BhBBBDHAQALIABBADYCACAAQQRqIAFB8BgQfxogAUHwGGokACAAC0kBAX8jAEEQayIDJAAgAyAAIAEgAhBqAkAgAygCAEEBRgRAIANBCGooAgAiAEUNASADKAIEIAAQxwEACyADQRBqJAAPCxC+AQALRwEBfyMAQRBrIgIkACACIAAgARBBAkAgAigCAEEBRgRAIAJBCGooAgAiAEUNASACKAIEIAAQxwEACyACQRBqJAAPCxC+AQALVAAgACABLwEOOwEOIAAgAS8BCDsBCCAAIAEoAQQ2AQQgACABLwEMQX9zOwEMIAAgAS8BCkF/czsBCiAAIAEvAQJBf3M7AQIgACABLwEAQX9zOwEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBf2oiAg0BDAILCyAEIAVrIQMLIAMLSgACfyABQYCAxABHBEBBASAAKAIYIAEgAEEcaigCACgCEBEBAA0BGgsgAkUEQEEADwsgACgCGCACIAMgAEEcaigCACgCDBECAAsLQgEEfwJAIAEoAgAiAiABKAIETw0AIAJBAWoiAyACSQ0AIAEoAgAhBCABIAM2AgBBASEFCyAAIAQ2AgQgACAFNgIAC1wBAX8jAEEgayIDJAAgA0GAgMQANgIMIANB+IPAADYCCCADIAE2AgAgAyABIAJqNgIEIANBGGogA0EIaikDADcDACADIAMpAwA3AxAgACADQRBqEGEgA0EgaiQACy0AAkAgAQRAIAEgAhC1ASICDQFBACECDAELQQAhAQsgACABNgIEIAAgAjYCAAs7AAJAIAQgA08EQCACIARJDQEgACAEIANrNgIEIAAgASADajYCAA8LIAMgBCAFEFYACyAEIAIgBRBVAAtIAQF/IwBBIGsiAyQAIANBFGpBADYCACADQbijwAA2AhAgA0IBNwIEIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhCTAQALOgEBfyMAQRBrIgAkAEHUxsAAKAIAQQNHBEAgAEEBOgALIAAgAEELajYCDCAAQQxqEA0LIABBEGokAAs8AQF/An9BACABKAIAIgIgASgCBEYNABogASACQQFqNgIAIAItAAAhAUEBCyECIAAgAToAASAAIAI6AAALOwEBfyMAQRBrIgIkACACQQhqIAEoAgAQeSACLQAIIQEgACACLQAJOgABIAAgAUEBcToAACACQRBqJAALOQECfiAAIAEpAQAiAj0BACAAIAIgAkIgiIU9AQYgACACQhCIIgMgAkIwiIU9AQQgACACIAOFPQECC0gAAkAgAC0ABA0AQZjHwAAoAgBBAUcEQEGYx8AAQgE3AwAMAQtBnMfAACgCAEUNACAAKAIAQQE6AAQLIAAoAgAoAgBBADoAAAtgAQN/IwBBEGsiASQAIAAoAgwiAkUEQEGsmcAAQStB6KDAABB3AAsgACgCCCIDRQRAQayZwABBK0H4oMAAEHcACyABQQA2AgQgASADNgIAIAFBiKHAACAAKAIIIAIQNgALPAEDfyABQQAQDyECIAFBARAPIQMgAUECEA8hBCAAIAFBAxAPNgIMIAAgBDYCCCAAIAM2AgQgACACNgIACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBf2oiAg0ACwsgAAs5AQJ/IwBB4DFrIgAkACAAQQAQayAAQQA2AgwgAEHwGGogAEHwGBB/GiAAQfAYahBtIABB4DFqJAALKgEBfyADIAIQOiIEBEAgBCAAIAMgASABIANLGxB/GiAAIAEgAhA8CyAECysAAkAgAEF8Sw0AIABFBEBBBA8LIAAgAEF9SUECdBC1ASIARQ0AIAAPCwALLwEBfyMAQRBrIgEkACABQQhqIAAQjwEgASgCDCABKAIIEAdBADYCACABQRBqJAALMQEBfyABKAIAIgJBf0cEQCABIAJBAWo2AgAgACABNgIEIAAgAUEEajYCAA8LEMQBAAsrAQF/IwBBIGsiASQAIAFBEGogABA9IAEgAUEQahBgIAEQnAEgAUEgaiQACzAAIAAoAgAhACABELoBRQRAIAEQuwFFBEAgACABEMABDwsgACABEEMPCyAAIAEQQgsxAQF/IAEoAgQiAgRAIAAgAjYCBCAAQQhqQQE2AgAgACABKAIANgIADwsgAEEANgIACzIAIAAoAgAhACABELoBRQRAIAEQuwFFBEAgADEAACABECUPCyAAIAEQQA8LIAAgARA/CzYAIAAgASgCGEHQocAAQQggAUEcaigCACgCDBECADoACCAAIAE2AgAgAEEAOgAJIABBADYCBAsrACAAKAIAIgAtAAAgAEEAOgAAQQFxRQRAQZiJwABBK0GIicAAEHcACxBKCy8BAX8gACACIAFrIgIQvQEgACgCCCIDIAAoAgBqIAIgASACEDQgACACIANqNgIICzAAIAAgACgCBCIAIAEgABs2AgQgAEUgACABRnJFBEBB2J3AAEE2QaiewAAQkgEACws0AQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkGAmcAANgIEIAJBgJnAADYCACACEH0ACy0BAX8jAEEQayICJAAgARCzASACQQhqIAEQhAEgACACKQMINwIAIAJBEGokAAstAQF/IwBBEGsiAiQAIAEQswEgAkEIaiABEJcBIAAgAikDCDcCACACQRBqJAALNQEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAAgA0EIaiIAKAIAIAAoAgQQdCADQRBqJAALMgEBfyMAQRBrIgAkACAAQRQ2AgwgAEHUg8AANgIIIABBCGpBiIbAAEEAQeiDwAAQNgALLAEBfyMAQRBrIgMkACADIAE2AgwgAyAANgIIIANBCGpBrKHAAEEAIAIQNgALNAEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBpKTAADYCBCACQbijwAA2AgAgAhB9AAsyAQF/QQEhASAALQAEBH8gAQUgACgCACIAKAIYQeSlwABBASAAQRxqKAIAKAIMEQIACws1AQF/IAEoAhhB46XAAEEBIAFBHGooAgAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAshACABBEADQCAAQQA6AAAgAEEBaiEAIAFBf2oiAQ0ACwsLKAAgASgCAEUEQCABQX82AgAgACABNgIEIAAgAUEEajYCAA8LEMQBAAsoAQF/IwBBEGsiAiQAIAIgACgCADYCDCACQQxqIAEQigEgAkEQaiQACyAAAkAgAUF8Sw0AIAAgAUEEIAIQrQEiAEUNACAADwsACycBAX8CQCAAKAIEIgFFDQAgAEEIaigCACIARQ0AIAEgAEEBELwBCwsnAQF/AkAgACgCACIBRQ0AIABBBGooAgAiAEUNACABIABBARC8AQsLHwEBfyMAQRBrIgEkACABIAAQfiABKAIAIAFBEGokAAsrAQF/IAAoAgAiASgCACABKAIEIAAoAgQoAgAgACgCCCgCAEGIqsAAEAgACyEBAX8jAEHwGGsiASQAIAEgABBjIAEQoQEgAUHwGGokAAshACABQQRPBEAgACACNgAADwtBmJLAAEEgQbiSwAAQdwALHQAgASgCAEUEQAALIABBnIbAADYCBCAAIAE2AgALGAEBfyAAKAIEIgEEQCAAKAIAIAEQrgELCxoBAX8gACgCCCIBIAAoAgRHBEAgACABEG8LCxoAIABCADcCBCAAQQQ2AgAgAEEMakIANwIACxYAIABBCHRBgID8B3EgAEEYdHJBEHYLHQAgASgCAEUEQAALIABBwKHAADYCBCAAIAE2AgALGwAgARCiASAAIAEoAgg2AgQgACABKAIANgIACxwAIAEoAhhBxKPAAEELIAFBHGooAgAoAgwRAgALHAAgASgCGEHPo8AAQQ4gAUEcaigCACgCDBECAAscACABKAIYQYS4wABBBSABQRxqKAIAKAIMEQIACxcAIAAgAjYCCCAAIAI2AgQgACABNgIACxcAIAAgAjYCCCAAIAM2AgQgACABNgIACxIAIABBDHQgAEHw/wNxQQR2cgsNACAAIAEgAiADEIEBCxAAIAEEQCAAIAFBARC8AQsLFgAgACABKAIINgIEIAAgASgCADYCAAsQACABBEAgACABQQQQvAELCxIAIAAoAgAgASABIAJqEDBBAAsVACABIAAoAgAiACgCACAAKAIEEAkLDAAgAARADwsQwwEACxQAIAAoAgAgASAAKAIEKAIMEQEACwgAIAAgARA6Cw4AIAAgASABIAJqEIsBCxAAIAAoAgAgASACELYBQQALEAAgACACNgIEIAAgATYCAAsQACABIAAoAgAgACgCBBAJCw0AIAAtAABBEHFBBHYLDQAgAC0AAEEgcUEFdgsKACAAIAEgAhA8Cw0AIAAgACgCCCABEG4LEQBBl6PAAEERQaijwAAQdwALDgAgACgCABoDQAwACwALCwAgADUCACABECULDQAgACgCACABIAIQEQsLACAAKAIAIAEQHwsNAEGwj8AAQRsQxQEACw4AQcuPwABBzwAQxQEACwkAIAAgARAEAAsGACABEAYLGQAgACABQfjGwAAoAgAiAEEkIAAbEQAAAAsLACAAKAIAIAEQLQsNACABQaiowABBAhAJCwYAEL4BAAsGACABEBwLDABC5K7ChZebpYgRCwQAIAELBABBAAsFAEGABAsEAEEBCwwAQvTQ1KnQ97O+ZgsMAEKNybDVpKrTlVYLAwABCwMAAQsL3D4CAEGAgMAAC8k+L1VzZXJzL3lhbmdkb25nbGFpLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Flcy1zb2Z0LTAuNS4wL3NyYy9iaXRzbGljZS5ycwAAAAAAEABhAAAAGgAAACgAAAAAABAAYQAAACEAAAAiAAAAU2xpY2UgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGFycmF5L1VzZXJzL3lhbmdkb25nbGFpLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2dlbmVyaWMtYXJyYXktMC4xNC40L3NyYy9saWIucnOuABAAYgAAAEoCAAAJAAAAL1VzZXJzL3lhbmdkb25nbGFpLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Flcy1zb2Z0LTAuNS4wL3NyYy9pbXBscy5ycwAAIAEQAF4AAAA1AAAAGQAAAHNyYy9saWIucnMAAJABEAAKAAAAZwAAABQAAACQARAACgAAAGcAAAAJAAAAYW1hcC13ZWKQARAACgAAADYAAAAaAAAASW5zdGFuY2Ugbm90IGNyZWF0ZWSQARAACgAAAEYAAAAVAAAAMDEyMzQ1Njc4OWFiY2RlZi9Vc2Vycy95YW5nZG9uZ2xhaS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9hZXMtc29mdC0wLjUuMC9zcmMvZXhwYW5kLnJzAAgCEABfAAAANwAAACYAAAAIAhAAXwAAADgAAAAaAAAACAIQAF8AAAA5AAAAGgAAAAgCEABfAAAAOgAAABoAAAAIAhAAXwAAADcAAAAJAAAACAIQAF8AAABAAAAAFwAAAAgCEABfAAAAQgAAADMAAAAIAhAAXwAAAEcAAAAcAAAACAIQAF8AAABHAAAACQAAAAgCEABfAAAATwAAACEAAAABAAAACAAAAAQAAAACAAAAAwAAAAQAAAAIAAAABAAAAAUAAAAvVXNlcnMveWFuZ2RvbmdsYWkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L3NyYy9saWJjb3JlL2FsbG9jL2xheW91dC5ycwAAACwDEABxAAAA5wAAAAkAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAYAAAAAAAAAAQAAAAcAAAAIAAAAAAAAAAEAAAAJAAAACgAAAAsAAAAMAAAABAAAAAQAAAANAAAADgAAAC9Vc2Vycy95YW5nZG9uZ2xhaS8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLXg4Nl82NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYnN0ZC9zeW5jL29uY2UucnMAAAAYBBAAbQAAAAgBAAApAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQAPAAAAAAAAAAEAAAAQAAAAEQAAABIAAAATAAAAAAAAAAEAAAAQAAAAEQAAABIAAAAUAAAABAAAAAQAAAAVAAAAFgAAABcAAAAMBRAAAAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvVXNlcnMveWFuZ2RvbmdsYWkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L3NyYy9saWJhbGxvYy9zdHJpbmcucnMASwUQAGwAAACMCAAACQAAABkAAAAAAAAAAQAAABoAAAAKClN0YWNrOgoKCgobAAAABAAAAAQAAAAcAAAAHQAAAB4AAABhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgOiD8BRAALQAAACkGEAAMAAAANQYQAAMAAABkZXN0aW5hdGlvbiBhbmQgc291cmNlIHNsaWNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzUAYQADQAAAAvVXNlcnMveWFuZ2RvbmdsYWkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L3NyYy9saWJjb3JlL21hY3Jvcy9tb2QucnMAjAYQAG8AAAAoAAAACQAAAFRyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eS9Vc2Vycy95YW5nZG9uZ2xhaS8ucnVzdHVwL3Rv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BAAAFgAAAHRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAHgNEAAYAAAAcwQAABoAAABpbmNvbnNpc3RlbnQgc3RhdGUgaW4gdW5wYXJreA0QABgAAACrBAAAEgAAAHgNEAAYAAAAuQQAAA4AAABhdHRlbXB0ZWQgdG8gdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggdHdvIG11dGV4ZXNzcmMvbGlic3RkL3N5bmMvY29uZHZhci5ycw4PEAAaAAAAPwIAABIAAABzcmMvbGlic3RkL3N5bmMvb25jZS5yc2Fzc2VydGlvbiBmYWlsZWQ6IHN0YXRlX2FuZF9xdWV1ZSAmIFNUQVRFX01BU0sgPT0gUlVOTklORzgPEAAXAAAApwEAABUAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAADgPEAAXAAAAiwEAABUAAAA4DxAAFwAAAOgBAAAJAAAAOA8QABcAAAD0AQAAHgAAAFBvaXNvbkVycm9yIHsgaW5uZXI6IC4uIH1jYW5ub3QgbW9kaWZ5IHRoZSBwYW5pYyBob29rIGZyb20gYSBwYW5pY2tpbmcgdGhyZWFkc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnNBEBAAFwAAAGoAAAAJAAAAQRAQABcAAAChAQAADwAAAEEQEAAXAAAAogEAAA8AAAAxAAAAEAAAAAQAAAAyAAAAMwAAADQAAAAMAAAABAAAADUAAAAlAAAACAAAAAQAAAA2AAAANwAAACUAAAAIAAAABAAAADgAAABOdWxFcnJvciUAAAAEAAAABAAAADkAAABjYW4ndCBibG9jayB3aXRoIHdlYiBhc3NlbWJseXNyYy9saWJzdGQvc3lzL3dhc20vY29uZHZhci5ycwAFERAAHgAAABUAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXhzcmMvbGlic3RkL3N5cy93YXNtL211dGV4LnJzVBEQABwAAAAVAAAACQAAAHNyYy9saWJhbGxvYy9yYXdfdmVjLnJzY2FwYWNpdHkgb3ZlcmZsb3eAERAAFwAAAG4CAAAFAAAAYC4uALkREAACAAAAQm9ycm93RXJyb3JCb3Jyb3dNdXRF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vCFPZdHhTwDaIVAA4OFRMOFhU+zioVTQ6OFUIAAuVfABv1UAcAAHAC0BAQECAQIBAUgLMBUQAWUHAgYCAgEEIwEeG1sLOgkJARgEAQkBAwEFKwN3DwEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE5AwUDAQQHAgsCHQE6AQIBAgEDAQUCBwILAhwCOQIBAQIECAEJAQoCHQFIAQQBAgMBAQgBUQECBwwIYgECCQsGSgIbAQEBAQE3DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BAAMAAx0DHQIeAkACAQcIAQILCQEtA3cCIgF2AwQCCQEGA9sCAgE6AQEHAQEBAQIIBgoCATARPwQwBwEBBQEoCQwCIAQCAgEDOAEBAgMBAQM6CAICmAMBDQEHBAEGAQMCxjoBBQABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0BJggZCy4DMAECBAICJwFDBgICAgIMAQgBLwEzAQEDAgIFAgEBKgIIAe4BAgEEAQABABAQEAACAAHiAZUFAAMBAgUEKAMEAaUCAAQAApkLsAE2DzgDMQQCAkUDJAUBCD4BDAI0CQoEAgFfAwIBAQIGAaABAwgVAjkCAQEBARYBDgcDBcMIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIbAlUIAgEBAmoBAQECBgEBZQMCBAEFAAkBAvUBCgIBAQQBkAQCAgQBIAooBgIECAEJBgIDLg0BAgAHAQYBAVIWAgcBAgECegYDAQECAQcBAUgCAwEBAQACAAU7BwABPwRRAQACAAEBAwQFCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFAAcABAAHbQcAYIDwAExheW91dEVycnByaXZhdGUAQajHwAALAQEAbwlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuNDQuMCAoNDljYWU1NTc2IDIwMjAtMDYtMDEpBndhbHJ1cwYwLjE4LjAMd2FzbS1iaW5kZ2VuBjAuMi42NQ==", RSAWorker = function() {
        function A(A, i) {
            this.parent = A,
            this.dE(i)
        }
        return A.prototype.transform = function(A) {
            if (this.instance)
                return this.instance.encode(A)
        }
        ,
        A.prototype.dE = function(A) {
            initSync(base64ToBuffer(data)),
            this.instance = new RSAPublicKeyPair,
            this.instance.init(),
            A && A(null)
        }
        ,
        A
    }(), env;
    function base64ToBuffer(A) {
        for (var i = atob(A), g = new Uint8Array(i.length), I = 0, t = i.length; I < t; I++)
            g[I] = i.charCodeAt(I);
        return g.buffer
    }
    var env = polyfill.Support.DW ? {
        movingDraw: sharedChunk.movingDraw,
        db: sharedChunk.db,
        nebulaVersion: sharedChunk.nebulaVersion,
        host: sharedChunk.host
    } : {
        movingDraw: window.movingDraw
    }
      , AMapWorker = function(t) {
        function A(A, i, g) {
            var I = t.call(this) || this
              , i = (I.key = i,
            I.GW = g,
            I.lQ = {},
            I.Zw = !1,
            I._id = "-1",
            I.protocol = "https",
            I.Yw = XHR,
            I.jQ = new polyfill.MY,
            I.QZ = "",
            I.$w = [],
            I.Uh = new polyfill.Bh(A,I),
            I.self = A,
            I.z_ = new ImageManagerWorker);
            return I.R_ = new polyfill.jb({
                parent: I,
                z_: i
            }),
            I.IW = new polyfill.xW(I,XHR),
            I.Ww = new NebulaSourceWorker(I),
            I.NQ = new InnerLabelsSourceWorker(I),
            I.lQ[I.Ww.id] = I.Ww,
            I.yw = new LabelWorker(I),
            I.BW = new OverlayWorker(I),
            polyfill.Support.wasm && (I.PW = new RSAWorker(I)),
            I.Fb(),
            I.yY = new polyfill.wY({
                render: function() {
                    I.jQ.exec(10)
                },
                check: function() {
                    return I.jQ.xY()
                }
            }),
            I
        }
        return polyfill.Ei(A, t),
        A.prototype.initCryptWorker = function(A, i, g) {
            g()
        }
        ,
        A.prototype.setId = function(A, i, g) {
            this._id = i,
            g()
        }
        ,
        A.prototype.loadNebulaSourceTile = function(A, i, g) {
            var I = this
              , t = i.url
              , B = i.ya
              , Q = i.zoom
              , C = i.projectionId
              , e = i.optimalZoom
              , o = i.Ca
              , E = i.mS
              , h = i.viewMode
              , a = i.showBuildingBlock
              , l = i.ZL
              , n = i.hH
              , i = i.kZ;
            return this.Ww.bw(t, B, Q, e, C, o, E, h, a, l, n, function(A, i) {
                I.Zw ? I.$w.push({
                    done: g,
                    type: "NebulaSourceTile",
                    data: i
                }) : g(A, i)
            }, i)
        }
        ,
        A.prototype.decodeNebulaSourceTile = function(A, i, g) {
            var I = i.url
              , t = (i.ya,
            i.zoom)
              , B = i.projectionId
              , Q = i.optimalZoom
              , C = (i.Ca,
            i.mS)
              , e = i.viewMode
              , o = i.showBuildingBlock
              , E = i.ZL
              , i = (i.hH,
            i.buffer);
            return this.Ww.pQ(i, B, t, e, o, C, Q, E, g, I)
        }
        ,
        A.prototype.loadNebulaSourceTileSdf = function(A, i, g) {
            var I = this
              , t = i.url
              , B = i.ya
              , Q = (i.zoom,
            i.projectionId)
              , C = (i.optimalZoom,
            i.Ca,
            i.mS,
            i.viewMode,
            i.showBuildingBlock,
            i.mH)
              , i = i.ZL;
            return this.Ww.bW(t, B, Q, i, C, function(A, i) {
                I.Zw ? I.$w.push({
                    done: g,
                    type: "NebulaSourceTileSdf",
                    data: i
                }) : g(A, i)
            })
        }
        ,
        A.prototype.decodeNebulaSourceTileSdf = function(A, i, g) {
            var I = this
              , t = i.url
              , B = i.ya
              , Q = (i.zoom,
            i.projectionId)
              , C = (i.optimalZoom,
            i.Ca,
            i.mS,
            i.viewMode,
            i.showBuildingBlock,
            i.mH)
              , e = i.ZL
              , i = i.buffer
              , t = -1 !== t.indexOf("/oversea")
              , o = new polyfill.vH;
            return this.Ww.HQ(i, t, Q, B, o, C, e, function(A, i) {
                I.Zw ? I.$w.push({
                    done: g,
                    type: "NebulaSourceTileSdf",
                    data: i
                }) : g(A, i)
            }),
            {
                cancel: o.cancel
            }
        }
        ,
        A.prototype.loadDistrictSourceTile = function(A, i, g) {
            var I = i.url
              , t = i.tileCoord
              , B = i.projectionId
              , Q = i.tileSize;
            return i.styles,
            this._getDistrictSourceWorker(),
            this.kW.bw(I, t, B, Q, g)
        }
        ,
        A.prototype.loadMapboxVTSourceTile = function(A, i, g) {
            var I = this
              , t = i.url
              , B = i.tileCoord
              , Q = i.projectionId
              , C = i.tileSize
              , i = i.styles;
            return this._getMapboxVTSourceWorker(),
            this.QJ.bw(t, B, Q, C, i, function(A, i) {
                I.Zw ? I.$w.push({
                    done: g,
                    type: "loadMapboxVTSourceTile",
                    data: i
                }) : g(A, i)
            })
        }
        ,
        A.prototype.reBufferMapboxVTSource = function(A, i, g) {
            var I = i.MX
              , i = i.styles;
            return this._getMapboxVTSourceWorker(),
            this.QJ.mX(I, i, g)
        }
        ,
        A.prototype.loadMapboxSourceTile = function(A, i, g) {
            var I = i.url
              , t = i.tileCoord
              , B = i.projectionId
              , Q = i.tileSize
              , C = i.styles
              , i = i.adcode;
            return this._getMapboxSourceWorker(),
            this.vQ.bw(I, t, B, Q, C, i, g)
        }
        ,
        A.prototype.updateMapStyle = function(A, i, g) {
            polyfill.Support.amapRunTime && !polyfill.Support.amapRunTime["style-parse-begin"] && (polyfill.Support.amapRunTime["style-parse-begin"] = Date.now());
            var I = JSON.parse(i.value);
            polyfill.Support.amapRunTime && !polyfill.Support.amapRunTime["style-parse-end"] && (polyfill.Support.amapRunTime["style-parse-end"] = Date.now()),
            this.vn = new polyfill.StyleParser(i.TY),
            this.vn.jY(I),
            this.Ww.emit("styleReady")
        }
        ,
        A.prototype.updateUserStyle = function(A, i, g) {
            this.vn && this.vn.setStyle(i.Kd),
            g && g()
        }
        ,
        A.prototype.sendHttp = function(A, i) {
            this.R_.protocol = i.protocol,
            this.protocol = i.protocol
        }
        ,
        A.prototype.updateParams = function(A, i) {
            this.params = polyfill.assign(this.params, i),
            i.langForeign && (this.langForeign = i.langForeign),
            i.QG && (this.QG = i.QG)
        }
        ,
        A.prototype.getSDFData = function(A, i, g) {
            this.R_.loadData(i, {
                cb: function(A) {
                    g(null, A)
                }
            })
        }
        ,
        A.prototype.getImages = function(A, i) {
            var B = this
              , Q = i.data
              , C = i.cb
              , e = this.z_;
            e.loadImages(Q, {
                cb: function(A) {
                    for (var i = [], g = 0, I = Q; g < I.length; g++) {
                        var t = I[g];
                        i.push({
                            url: t,
                            data: e.getImage(t)
                        })
                    }
                    B.Uh.send("imageLoaded", {
                        data: i,
                        cb: C
                    })
                },
                type: "icon"
            })
        }
        ,
        A.prototype.setPathWebgl = function(A, i, g) {
            this.BW.setPathWebgl(i, g)
        }
        ,
        A.prototype.sendIndoorRequest = function(A, i, g) {
            var I = this;
            this.BW.AW(i, function(A, i) {
                I.Zw ? I.$w.push({
                    done: g,
                    type: "sendIndoorRequest",
                    data: i
                }) : g(A, i)
            })
        }
        ,
        A.prototype.Qw = function(A) {
            this.Uh.send("NebulaTileSdfLoaded", polyfill.ca)
        }
        ,
        A.prototype.setMainThreadBusy = function(A, i) {
            if (env.movingDraw)
                this.Zw = !1;
            else {
                if (this.Zw = i,
                !this.Zw)
                    for (var g = 0, I = this.$w; g < I.length; g++) {
                        var t = I[g];
                        t.done ? t.done(null, t.data) : this.Uh.send(t.type, t.data)
                    }
                this.$w = []
            }
        }
        ,
        A.prototype.loadWordsByFront = function(A) {
            this.Uh.send("loadWordsByFront", A.Es, A.cb)
        }
        ,
        A.prototype.innerLabelsLoadData = function(A, i, g) {
            this.NQ.loadData(i, g)
        }
        ,
        A.prototype.dQ = function(A) {
            return this.lQ[A]
        }
        ,
        A.prototype.deleteTileStaticSDF = function(A, i) {
            this.IW.NW(i)
        }
        ,
        A.prototype.PQ = function(A, i) {
            this.QZ = i
        }
        ,
        A.prototype._getNebulaSourceWorker = function() {
            return this.Ww || (this.Ww = new NebulaSourceWorker(this)),
            this.Ww
        }
        ,
        A.prototype._getDistrictSourceWorker = function() {
            return this.kW || (this.kW = new DistrictSourceWorker(this)),
            this.kW
        }
        ,
        A.prototype._getMapboxVTSourceWorker = function() {
            return this.QJ || (this.QJ = new polyfill.bX),
            this.QJ
        }
        ,
        A.prototype._getMapboxSourceWorker = function() {
            var A;
            return this.vQ || (A = this.vQ = new MapboxSourceWorker(this),
            this.lQ[A.id] = A),
            this.vQ
        }
        ,
        A.prototype.Fb = function() {
            var I = this;
            this.z_.on("iconImageLoaded", function(A) {
                delete A.type,
                I.Uh.send("iconImageLoaded", A)
            }),
            this.R_.on("dynamicTextSDFInfoLoaded", function(A) {
                delete A.type,
                I.Uh.send("dynamicTextSDFInfoLoaded", A.data)
            }),
            this.yw.on("dynamicTextVerticeLoaded", function(A) {
                var i, g = A;
                I.Zw ? (i = A.type,
                delete A.type,
                I.$w.push({
                    type: i,
                    data: g
                })) : (delete A.type,
                I.Uh.send("dynamicTextVerticeLoaded", g))
            }),
            this.yw.on("dynamicTextVerticeLoadedByTile", function(A) {
                var i, g = A;
                I.Zw ? (i = A.type,
                delete A.type,
                I.$w.push({
                    type: i,
                    data: g
                })) : (delete A.type,
                I.Uh.send("dynamicTextVerticeLoadedByTile", g))
            })
        }
        ,
        A
    }(polyfill.Event);
    return polyfill.Support.DW && (self.Wh = new AMapWorker(self,sharedChunk.key,env),
    self.StyleParser = polyfill.StyleParser),
    AMapWorker
}
)(sharedChunk);
